isItemChecked总是返回与onItemClickListener内部相反的内容?

Jas*_*ray 8 android android-listview android-adapterview

我现在有一个ListView,激活上下文ActionBarListViewOnItemLongClickListener.

我试图通过点击它们来选择项目,但只有在Contextual 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);
        }

    }

});
Run Code Online (Sandbox Code Playgroud)

编辑:这是非常古怪..这段代码切换选择状态:

list.setItemChecked(position, list.isItemChecked(position));
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事!?

编辑2:啊,看起来android自动检查并取消选中每个项目...有没有办法改变这种行为并自己处理?

nvi*_*tty 1

这是方法的文档setItemChecked:设置指定位置的检查状态

在行中

list.setItemChecked(position, !list.isItemChecked(position));
Run Code Online (Sandbox Code Playgroud)

isItemChecked您通过否定声明中的第二个参数来明确地将其设置为与返回值相反的值