【问题标题】:Android listview multiple items are checked while selecting a checkbox选中复选框时检查Android listview多个项目
【发布时间】: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;
}

【问题讨论】:

标签: android checkbox android-listview


【解决方案1】:

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

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

【讨论】:

  • 对我不起作用仍然检查了许多复选框。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-02
  • 2011-01-02
  • 1970-01-01
相关资源
最近更新 更多