Android复选框状态在点击之后不会改变状态

时间:2016-11-22 13:21:48

标签: 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();
}

点击复选框后,将检查状态,点击后如果取消选中状态,我点击后就无法改变状态,

点进> 选中,点击 - > 取消选中,点击 - > 取消选中,点击 - > 取消选中,点击 - >的选中

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用holder.select_contact.setOnCheckedChangeListener()而不是onClickListener。