2013-02-18 112 views
0

我在我的佈局中有一個全選複選框按鈕,每個複選框都有一個列表視圖。我已經添加下面的代碼選擇所有複選框爲:維護複選框行爲

selectall.setOnCheckChangedListener代碼: -

for(int i=0; i < listView.getChildCount(); i++){ 
    RelativeLayout itemLayout = (RelativeLayout)listView.getChildAt(i); 
    CheckBox cb = (CheckBox)itemLayout.findViewById(R.id.MyListViewCheckBox); 
    cb.setChecked(true); 
} 

在這裏,我保持我被困在每個列表視圖項

holder.mcbGoupMember.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        // TODO Auto-generated method stub 

        commonFriends.get(position).setChecked(isChecked); 
       } 
      }); 

現在這裏一種情況是,我希望當我手動選擇所有複選框項目時,那麼在此時應該自動選擇全部按鈕/複選框,反之亦然。

我該如何做到這一點?

回答

0

你可以只讓你有一次檢查項目的數量的簡單計數。如果你檢查一個項目增加一個,如果你取消選中一個項目減少一個。每增加/減少一次,檢查此檢查項目編號是否與列表中的項目數量相同,如果是,則選中全選。只要確保您的selectall.setOnCheckChangedListener將列表複選框的值設置爲isChecked中收到的任何值即可。例如:

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    for(int i=0; i < listView.getChildCount(); i++){ 
     RelativeLayout itemLayout = (RelativeLayout)listView.getChildAt(i); 
     CheckBox cb = (CheckBox)itemLayout.findViewById(R.id.MyListViewCheckBox); 
     cb.setChecked(isChecked); 
    } 
}