Android listview checkbox 單選
問題描述
現(xiàn)在后臺(tái)返回一個(gè)是否默認(rèn)地址的值int Isdefault = bean.getDefault_address();
怎么實(shí)現(xiàn)checkbox切換?
問題解答
回答1:在對(duì)你的代碼改變最小的情況下可以這么寫,首先找到默認(rèn)選中的地址
int defaultPosition = -1;for (int i = 0; i < beanlist.size(); i++) { if(beanlist.get(i).getDefault_address()){ defaultPosition = i; break; }}
兩種情況:
當(dāng)選過一個(gè)其他地址后,再取消,默認(rèn)地址重新選中
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); }}
一旦選過其他的地址,默認(rèn)選項(xiàng)就不再起作用
tempPosition = defaultPosition;if(position == tempPosition){ holder.checkBox.setChecked(true);}else{ holder.checkBox.setChecked(false);}回答2:
創(chuàng)建一個(gè)數(shù)組以維護(hù)checkBox的狀態(tài)比較省事一點(diǎn)。當(dāng)CheckBox收到點(diǎn)擊事件時(shí)改變statusList中對(duì)應(yīng)checkBox的狀態(tài),同時(shí)在onBindView/getView方法中根據(jù)statusList的值設(shè)置checkBox的狀態(tài)就好了。
----------------------分割線---------------------------------------------------------------------------------沒看到是要單選。。單選的話需要再加一個(gè)flag,記錄上次選擇的位置,然后從adapter當(dāng)中獲取到對(duì)象,如果可見則修改checkStatus.
相關(guān)文章:
1. Span標(biāo)簽2. docker-machine添加一個(gè)已有的docker主機(jī)問題3. redis啟動(dòng)有問題?4. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””5. docker-compose中volumes的問題6. android新手一枚,android使用httclient獲取服務(wù)器端數(shù)據(jù)失敗,但是用java工程運(yùn)行就可以成功獲取。7. javascript - ng-options 設(shè)置默認(rèn)選項(xiàng),不是設(shè)置第一個(gè)哦,看清楚了!8. angular.js使用$resource服務(wù)把數(shù)據(jù)存入mongodb的問題。9. java - Collections類里的swap函數(shù),源碼為什么要新定義一個(gè)final的List型變量l指向傳入的list?10. css - 求推薦適用于vue2的框架 像bootstrap這種類型的
