8

私は現在、'sのListViewContextualをアクティブにするを持っています。ActionBarListViewOnItemLongClickListener

アイテムをクリックして選択できるようにしようとしていますが、コンテキストActionBarがアップしている場合に限ります。

問題は、チェックするisItemChecked()と、アイテムの選択状態を切り替えるために、常に想定とは逆の状態が返されることです。

これが私がどのように実装したかですOnItemClickListener

list.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (mActionMode != null){
            list.setItemChecked(position, !list.isItemChecked(position));
        }
        else{
            list.setItemChecked(position, false);
        }

    }

});

編集:これはかなり奇妙です..このコードは選択状態を切り替えます:

list.setItemChecked(position, list.isItemChecked(position));

何が起こっている!?

編集2:ああ、Androidが各アイテムを自動的にチェックおよびチェック解除しているようです...この動作を変更して自分で処理する方法はありますか?

4

1 に答える 1

1

メソッドのドキュメントは次のsetItemCheckedとおりです。指定された位置のチェック状態を設定します

ラインで

list.setItemChecked(position, !list.isItemChecked(position));

isItemCheckedステートメントの 2 番目の引数を否定することによって、返されるものの反対に明示的に設定しています。

于 2015-11-22T07:12:49.533 に答える