リストからアイテムをクリックすると、その中の TextView の可視性が「消えた」から「見える」に変わり、クリックされたアイテムの位置が表示されます。これは、 TextViewを誤って操作したことによる不具合なしで行う必要があります。それをどのように実装すればよいですか?
質問する
39 次
1 に答える
0
以前の回答とは異なり、各 TextView に異なるデータを表示することを想定しているため、アダプターに新しいメンバーを追加し、アダプターに適切なゲッターとセッターを追加しましょう。
private SparseArray<String> secondary = new SparseArray<String>();
public String getSecondary(int position) {
return secondary.get(position, "");
}
public void setSecondary(int position, String value) {
secondary.put(position, value);
notifyDataSetChanged(); // Updates the ViewGroup automatically!
}
SpareArrays は、予測可能なインデックスのないセットで優れていますが、何か違うものが必要な場合は、List、HashMap などを使用できます。onListItemClick()
新しいメソッドを使用するように微調整します。
protected void onListItemClick(ListView l, View v, int position, long id) {
String clickedPosition = "Clicked position = " + position;
mAdapter.setSecondary(position, clickedPosition);
}
最後に、データがある場合にのみgetView()
表示するように更新します。textClickedPosition
secondary
TextView textView = (TextView) view.findViewById(R.id.textPosition);
textView.setText(event);
textView = (TextView) view.findViewById(R.id.textClickedPosition);
String string = getSecondary(position);
if(!string.isEmpty()) {
textView.setText(string);
textView.setVisibility(View.VISIBLE);
}
else // You must hide the view otherwise you will see odd behavior for the recycle method
textView.setVisibility(View.GONE);
return view;
最後に、Turbo Charge your UIなどの Google I/O レクチャーを視聴することをお勧めします。豊富な知識が含まれています。
于 2013-04-16T19:59:29.773 に答える