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