【问题标题】:isItemChecked always returns the opposite of what it is supposed to when inside an onItemClickListener?isItemChecked 总是返回与在 onItemClickListener 中应该返回的相反的值?
【发布时间】:2013-02-28 07:20:27
【问题描述】:

我目前有一个ListView,它在ListViewOnItemLongClickListener 中激活一个上下文ActionBar

我正在尝试通过单击它们来选择项目,但前提是上下文 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 会自动检查和取消选中每个项目...有没有办法改变这种行为并自己处理?

【问题讨论】:

  • 我们需要了解 mActionMode 方法中的内容,因为它触发了复选框是否应该被选中。你能包含mActionMode() 方法的代码吗?谢谢。

标签: android android-listview android-adapterview


【解决方案1】:

这里是setItemChecked 方法的文档: 设置指定位置的选中状态

排队

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

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

【讨论】:

    猜你喜欢
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 2019-10-22
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多