如何检查 ListView 项目是不是被选中

Posted

技术标签:

【中文标题】如何检查 ListView 项目是不是被选中【英文标题】:How to check if ListView item is checked or not如何检查 ListView 项目是否被选中 【发布时间】:2015-10-02 03:48:48 【问题描述】:

单击时,我使用list.setItemChecked(position, true) 将项目设置为在我的ListView 中选中。但是,我找不到查看列表项是否已检查的方法。

ListView 项目没有复选框/单选并且不使用CheckedTextViewListView 设置为 CHOICE_MODE_SINGLE

ListView onItemClick 监听器

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) 
      list.setItemChecked(position, true);

适配器getView

@Override
public View getView(int position, View convertView, ViewGroup parent) 
    inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    rowView = inflater.inflate(R.layout.rowlayout, parent, false);
    vg = parent;
    TextView textView = (TextView) rowView.findViewById(R.id.label);
    textView.setText(names[position]);
    TextView textView2 = (TextView) rowView.findViewById(R.id.tvValue);
    textView2.setText(stock[position]);
    return rowView;

有没有办法检查列表项是否被选中?例如,在 onItemClick 侦听器中执行以下操作:

if(position.isChecked()) 
    //do something

如果没有在布局中添加复选框/收音机并进行更改,我似乎无法提出任何建议。感谢您的任何建议,谢谢!

编辑:

标题有点混乱,所以澄清一下:问题不在于该项目没有被明确选择/取消选择,而是我需要处理第二次点击一个被选中的项目。我正在使用简单的 if/else 逻辑来处理这个问题,这有效但会在项目的其他地方引起问题,这就是为什么我想知道是否有一些内置功能可以检查项目是否被选中。

【问题讨论】:

为什么不改变被点击的背景颜色? @wyoskibum 是的,我正在这样做。问题不在于该项目没有明确选择/未选择,而是我需要处理对已选择项目的第二次点击。我正在使用简单的 if/else 逻辑来处理这个问题,这很有效,但会在项目的其他地方引起问题,这就是为什么我想知道是否有一些内置功能可以检查项目是否被选中。 【参考方案1】:

您可以使用list.isItemChecked(position)。见docs

【讨论】:

【参考方案2】:

如果使用 Buddy 的 isItemChecked(position) 建议对您不起作用,以下是在 listener 内的潜在解决方案。

如果我正确理解您的愿望,您基本上希望用户首先选择一个项目,然后通过再次单击该项目来“确认”选择。

如果是这种情况,我认为您已经非常接近找到解决方案了。在listener 之外创建一个变量。在OnItemClickListenerif 中,变量为空或不等于所选Item,将变量设置为所选Item 的值。 Else,运行你想要的代码!

例子:

myListView.setOnItemClickListener(new OnItemClick Listener() 
    public void onItemClick(AdapterView<?> parentView, View childView, int position, long id) 
        if (selectedItem == null || selectedItem != position)
            selectedItem = position;
        else 
            //do whatever it is you wanted to do after the second click!
         //end else
     //end onItemClick
); //end onItemClickListener

当然,每次您再次提出ListView 时,您都需要清除selectedItem!你怎么看?

【讨论】:

以上是关于如何检查 ListView 项目是不是被选中的主要内容,如果未能解决你的问题,请参考以下文章

listView如何判断是不是有一条item被选中

带有复选框的自定义 ListView 检查未选中的项目

当我在 Android 上滚动列表视图时复选框未选中

如何获取listview里选中的checkbox

Django检查复选框是不是被选中

如何检查 JCheckBox 是不是被选中?