我正在创建一个发送联系人的应用程序。我在列表视图中显示了联系人详细信息,其中使用了带有名称编号的自定义适配器和一个复选框。问题是,当我选中一个复选框时,随机复选框也会在列表中被选中。我在这里提到了很多问题而且还没有工作
在适配器类中填充列表的方法是
@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;
}
答案 0 :(得分:0)
您应该调用holder.box.setChecked(contact.isSelect());
而不是setSelected()
来正确重置CheckBox是否已被选中。
选中的状态不会影响是否选中此框。