recycleview中使用checkbox導致的重復選中問題


參考博文:http://www.myexception.cn/mobile/1852852.html 

在使用RecycleView做仿微信圖片選擇器,其中條目中使用了checkbox,在選中時由於holder的復用,導致checkbox會多選,解決方案如下:

需要兩個list一個用來放tag標記,一個用來放置選中的圖片路徑。

holder.checkBox.setTag(new Integer(position));//防止復用導致的checkbox多選的問題。
        //防止復選的輔助list   checkPositionlist
        if (checkPositionlist != null) {
            holder.checkBox.setChecked((checkPositionlist.contains(new Integer(position)) ? true : false));
        } else {
           holder.checkBox.setChecked(false);
        }

        holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                 if(isChecked){
                     if(!checkPositionlist.contains(holder.checkBox.getTag()))
                     {
                         checkPositionlist.add(new Integer(position));
                         checkedImgs.add(currentImgPath);
                     }
                 }else {
                     if(checkPositionlist.contains(holder.checkBox.getTag())){
                         checkPositionlist.remove(holder.checkBox.getTag());
                         checkedImgs.remove(currentImgPath);
                     }
                 }
            }
        });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM