0

ListView複数選択モードがあります。アイテムをクリックするたびに、そのイベントを処理したいと考えています。このために、次のロジックを使用します。

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    OverlayTypes selected = (OverlayTypes) getListAdapter().getItem(
            position);
    boolean isChecked = getListView().getCheckedItemPositions().valueAt(
            position);
    Log.i(TAG, position+" is "+isChecked);
}

しかし、アイテムがチェックされるたびに、それgetCheckedは「false」で「true」であり、その逆も同様です。なんで?

4

2 に答える 2

1

タイミングに問題がある可能性があります。LogCatに印刷するまで、チェックボックスの値が更新されない場合があります。

ラインを変更してみてください

boolean isChecked = getListView().getCheckedItemPositions().valueAt(position);

boolean isChecked = l.getCheckedItemPositions().valueAt(position);

グローバルコピーの代わりにローカルコピーを読み取ることが役立つかどうかを確認します。

于 2013-01-08T11:11:56.510 に答える
0

私の問題はgetView()、カスタムアダプタのメソッドを取得することに過度に野心的だったことです。でgetView()、ビューを設定にある値に設定しようとしましたCheckableが、チェックされた状態がアダプタ内で処理されることに気づきませんでした。

それが理にかなっている場合。

于 2013-01-08T20:42:18.947 に答える