首页 >社区问答列表 >Android listview checkbox 单选

Android listview checkbox 单选

现在后台返回一个是否默认地址的值int Isdefault = bean.getDefault_address();


怎么实现checkbox切换?

  • 为情所困
  • 为情所困    2017-05-16 13:31:212楼

    在对你的代码改变最小的情况下可以这么写,首先找到默认选中的地址

    int defaultPosition = -1;
    for (int i = 0; i < beanlist.size(); i++) {
         if(beanlist.get(i).getDefault_address()){
             defaultPosition = i;
             break;
         }
    }

    两种情况:

    1. 当选过一个其他地址后,再取消,默认地址重新选中

    if(tempPosition > -1){
        if(position == tempPosition){
            holder.checkBox.setChecked(true);
        }else{
            holder.checkBox.setChecked(false);
        }
    }else{
        if(position == defaultPosition){
            holder.checkBox.setChecked(true);
        }else{
            holder.checkBox.setChecked(false);
        }
    }
    1. 一旦选过其他的地址,默认选项就不再起作用

    tempPosition = defaultPosition;
    if(position == tempPosition){
        holder.checkBox.setChecked(true);
    }else{
        holder.checkBox.setChecked(false);
    }

    +0添加回复

  • 回复
  • 淡淡烟草味
  • 淡淡烟草味    2017-05-16 13:31:211楼

    创建一个数组以维护checkBox的状态比较省事一点。
    当CheckBox收到点击事件时改变statusList中对应checkBox的状态,同时在onBindView/getView方法中根据statusList的值设置checkBox的状态就好了。

    ----------------------分割线---------------------------------------------------------------------------------
    没看到是要单选。。单选的话需要再加一个flag,记录上次选择的位置,然后从adapter当中获取到对象,如果可见则修改checkStatus.

    +0添加回复

  • 回复