0

リストビューを使用したアクティビティがあります。リストビューはリストビューアダプターで作成されるため、他のクラスで作成されます。onItemClick のいくつかのアクションが各リスト項目に対して 1 回だけ実行されるように設定するにはどうすればよいですか? クリックされたリスト項目の画像ソースを変更したいのですが、listView アダプターで設定されている場合、アクティビティからどのようにアクセスできますか?

ListView にある項目が設定されている List View Adapter のコードを次に示します。

 @Override
public View getView(final int position, View convertView, ViewGroup parent) {
    final ListCell cell;
    if (convertView == null) {
        convertView = inflater.inflate(R.layout.get_all_entry_list_view_cell, null);

        cell = new ListCell();
        cell.note = (TextView) convertView.findViewById(R.id.listViewNote);
        cell.img = (ImageView) convertView.findViewById(R.id.listViewImg);

        convertView.setTag(cell);

    }
    else {
        cell = (ListCell)convertView.getTag();
    }

 //.....Content is set with JSONObject from databse



 public class ListCell {
    private TextView note;
    private ImageView img;
}
4

1 に答える 1

0

ListCell クラスに boolean フィールドを追加して、項目がいつ触れられたかを識別できるようにします。適切なゲッターとセッターを作成する必要があります。

 public class ListCell {
    private TextView note;
    private ImageView img;
    private boolean touched;
}

クリックを処理するためにオーバーライドするメソッドがどこにあってもonItemClick()onTouchEvent()次のようなロジックを含めることができます。

if(!listCell.touched) {
  //do whatever needs to happen when the item is clicked
  listCell.setTouched(true);
}

ある時点で、ユーザーが後でもう一度クリックできるようにする場合は、すべてのリスト項目のブール値をリセットすることもできます。そのためlistCell.setTouched(false);、ユーザーが項目を再度クリックできるようにする前に、次のようなことを忘れないでください。

于 2015-06-05T19:14:35.380 に答える