0

リストからアイテムをクリックすると、その中の TextView の可視性が「消えた」から「見える」に変わり、クリックされたアイテムの位置が表示されます。これは、 TextViewを誤って操作したことによる不具合なしで行う必要があります。それをどのように実装すればよいですか?

4

1 に答える 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()表示するように更新します。textClickedPositionsecondary

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 に答える