0
私の単純なアダプターでは、アイテムのチェックボックスを管理したいと思っています。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.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE)を使用するように、リストビューを再設計することをお勧めします。代わりに、チェック項目を含むSparseBooleanArrayを使用することができます。 – Raphau