搜尋

首頁  >  問答  >  主體

Android listview checkbox 單選

現在後台傳回一個是否預設位址的值int Isdefault = bean.getDefault_address();

##怎麼實作checkbox切換?

为情所困为情所困2848 天前799

全部回覆(2)我來回復

  • 为情所困

    为情所困2017-05-16 13:31:21

    在對你的程式碼改變最小的情況下可以這麼寫,首先找到預設選取的位址

    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:21

    建立一個陣列以維護checkBox的狀態比較省事一點。
    當CheckBox收到點擊事件時改變statusList中對應checkBox的狀態,同時在onBindView/getView方法中根據statusList的值設定checkBox的狀態就好了。

    ----------------------分割線------------------------- -------------------------------------------------- ------
    沒看到是要單選。 。單選的話需要再加一個flag,記錄上次選擇的位置,然後從adapter當中獲取到對象,如果可見則修改checkStatus.

    回覆
    0
  • 取消回覆