解決android中checkbox全部選擇的操作


 

 

存在的問題:                                                                                                   

     我們在操作“全部選擇”list中的元素,我們最常用的方法是,遍歷一下,然后把所有的checkbox都給選中,但是這有一個bug,就是,當選擇后,往下拉時候,下面的都沒被選中,再往上拉的時候,上面的又會被取消選擇。於是,找到一個新的解決辦法,給記下來,留着以后使用。

 

image

解決辦法                                                                                                           

      我們把選中的位置使用一個數組或者集合來記着當前選擇的狀態。

如果集合中包含這個item,那么我們就讓他們的checkbox設置成選中狀態。

       我們使用set集合來做,因為set集合可以去重復。

舉個例子:

//一、創建一個set集合
private HashSet<String> itemSelected=new HashSet<String>();


//二、全部選擇的點擊事件
public void onClick(View v) {
        int id=v.getId();
        switch (id) {
        case R.id.bt_new_msg:
            Intent intent = new Intent(ConversationActivity.this, NewMessageActivity.class);
            startActivity(intent);
            break;
        case R.id.bt_all_selected:
            //把選中的狀態加入到一個set集合
            for(int i=0;i<adapter.getCount();i++){
                Cursor cursor = (Cursor) adapter.getItem(i);
                String idstr = cursor.getString(ID_COLUMN_INDEX);
                itemSelected.add(idstr);
            }
            adapter.notifyDataSetChanged();
            break;
            
        case R.id.bt_cancel_selected:
            
            break;
        }
        
    }

三、在顯示模式的時候去判斷set集合中的元素,然后設置checkbox的選中狀態
            //根據mode 模式設置checkbook
            if(mode==DISPLAYMODE.edit){
                
                checkBox.setVisibility(View.VISIBLE);
                
                //checkbox是否選中的
                if(itemSelected.contains(idstr)){
                    //選中
                    checkBox.setChecked(true);
                }else{
                    //不選中
                    checkBox.setChecked(false);
                }
                
            }else{
                checkBox.setVisibility(View.GONE);
            }


免責聲明!

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



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