0
在我简单的adapater,我想管理项目上的复选框。Android复选框状态不要改变状态后点击一下
当我上选中复选框,再次单击和状态将再次检查状态的该复选框后未选中不改变
的logcat:
E/checkedState: false
E/checkBoxStates: {09122331743=true}
E/checkedState: true
E/checkBoxStates: {09122331743=false}
E/checkedState: true
E/checkBoxStates: {09122331743=false}
E/checkedState: true
E/checkBoxStates: {09122331743=false}
E/checkedState: true
E/checkBoxStates: {09122331743=false}
E/checkedState: true
E/checkBoxStates: {09122331743=false}
E/checkedState: true
E/checkBoxStates: {09122331743=false}
我的代码是:
public void onBindViewHolder(final CustomContactsViewHolder holder, final int position) {
...
Boolean checkedState = checkBoxStates.get(list.get(position).getMobileNumber());
holder.select_contact.setChecked(checkedState == null ? false : checkedState);
holder.select_contact.setTag(position);
holder.select_contact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onChange((Integer) v.getTag());
}
});
}
private void onChange(int position) {
final UserPhoneContacts item = list.get(position);
if (item == null) {
return;
}
boolean checkedState = checkBoxStates.get(list.get(position).getMobileNumber()) == null ? false : true;
Log.e("checkedState ", checkedState + "");
checkBoxStates.put(item.getMobileNumber(), !checkedState);
Log.e("checkBoxStates ", checkBoxStates.toString());
notifyDataSetChanged();
}
点击复选框后,状态将被检查,点击后如果状态未被选中,我不能在点击后改变状态,
单击 - >检查,点击 - >选中,点击 - >选中,点击 - >选中,点击 - >选中
我怎样才能解决这个问题呢?
在每个滚动列表上调用'setOnCheckedChangeListener' –
然后我建议重新设计你的listview以使用listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE)这是更好的方式来处理listview中的检查,你不必使用这个map。相反,您将能够使用包含选中项目的SparseBooleanArray。 – Raphau