2013-02-28 46 views
8

我目前有一个ListView,它激活ListViewOnItemLongClickListener中的上下文ActionBarisItemChecked总是返回与onItemClickListener内部应该相反的值吗?

我想让它可以通过点击它们来选择项目,但只有当上下文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); 
     } 

    } 

}); 

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

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

这是怎么回事上!?

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

+0

我们需要了解mActionMode方法中的内容,因为它触发是否应该检查复选框。你能够包含'mActionMode()'方法的代码吗?谢谢。 – 2014-06-05 06:39:03

回答

1

这里是setItemChecked方法的文档: 设置在线路

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

你是它通过否定明确设置什么isItemChecked回报相反的指定位置

的选中状态在声明中的secoend争论