选中复选框时检查Android listview多个项目

Posted

技术标签:

【中文标题】选中复选框时检查Android listview多个项目【英文标题】:Android listview multiple items are checked while selecting a checkbox 【发布时间】:2015-11-29 11:43:09 【问题描述】:

我正在创建一个应用程序来发送联系人。我在使用带有名称编号和复选框的自定义适配器填充的列表视图中显示了联系人详细信息。问题是当我选中一个复选框时,随机复选框也会在列表中被选中。我在这里参考了很多问题,但仍然无法正常工作

适配器类中填充列表的方法是

@Override
public View getView(int position, View convertView, ViewGroup parent) 
    ContactsBean contact = contacts.get(position);
    ViewHolder holder = null;
    if (convertView == null) 
        LayoutInflater inflater = (LayoutInflater) mainActivity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        convertView = inflater.inflate(R.layout.list_layout, null);
        holder = new ViewHolder();
        holder.number = (TextView) convertView.findViewById(R.id.numberTextView);
        holder.name = (TextView) convertView.findViewById(R.id.nameTextView);
        holder.box = (CheckBox) convertView.findViewById(R.id.checkBox);
        convertView.setTag(holder);
     else 
        holder = (ViewHolder) convertView.getTag();
    
    holder.name.setText(contact.getName());
    holder.number.setText(contact.getNumber().get(0));
    holder.name.setTag(contact);
    holder.box.setTag(contact);
    holder.box.setOnClickListener(this);
    holder.box.setSelected(contact.isSelect());
    return convertView;


@Override
public void onClick(View v) 
    if (v.getId() == R.id.checkBox) 
        ContactsBean bean = (ContactsBean) v.getTag();
        bean.setSelect(!bean.isSelect());
        notifyDataSetChanged();
    


private static class ViewHolder 
    public TextView number;
    public TextView name;
    public CheckBox box;

【问题讨论】:

这是我的看法enter link description here 【参考方案1】:

您应该调用 holder.box.setChecked(contact.isSelect()); 而不是 setSelected() 以正确重置 CheckBox 是否被选中。

选中状态不影响复选框是否被选中。

【讨论】:

对我不起作用仍然检查了许多复选框。

以上是关于选中复选框时检查Android listview多个项目的主要内容,如果未能解决你的问题,请参考以下文章

滚动时带有复选框的Android ListView会松动选中的项目

使用android中的自定义arrayadapter在listview中使用复选框检查后如何删除多个项目?

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

listView中带有复选框的自定义布局:当我删除一行时,如果选中它(checkBox = true),则下一行将获得检查

滚动后未选中 ListView 适配器中的 Android 复选框

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