2015-06-16 69 views
0

我有一個列表項,其中有checkBox,我需要一次只選擇一個複選框。我無法將listView與singleChoice或RadioButton一起使用。下面是我正在使用的代碼,但我不知道爲什麼不能正常工作。Android One複選框一次選擇問題

@Override 
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    if (selectedCheckBox != null) { 
     // simulate radio group behavior 
     selectedCheckBox.setChecked(false); 
     selectedCheckBox = null; 
    } 

    if (isChecked) { 
     selectedCheckBox = (CheckBox) buttonView; 
    } 
} 

問題是checkbox仍然保持檢查狀態,我不知道爲什麼我將前一個selectedCheckBox設置爲false。誰能解釋會發生什麼?謝謝

更新 我測試了與Android 5.0的Nexus 5,它的工作原理。在Android版本< 5.0似乎有我提到的問題。

+0

您必須使用RadioButtons – webo80

+0

這不是必須的。我通過使用onClick()偵聽器而不是onCheckChanged()來實現此行爲,但我從未理解爲什麼onCheckChanged()不起作用。如果有人能解釋幕後發生的情況,我將不勝感激:) – Laura

回答

1

您需要調用:ListView Adapter的notifyDataSetChanged()。如果您的ListView中的數據不會刷新,並且您的複選框將保持選中狀態。

+0

謝謝,如果我打電話給notifyDataSetChanged(),它就可以工作。我不是爲什麼我沒有想到它。它現在是有道理的,再次感謝:) – Laura

0

如果每個ListView項目中都有一個複選框,則必須循環整個「其他」(必須未選中)項目,並取消選中它。這不是一個實際的方法。

0

我通常使用Arraylist來填充Listview。在數組列表中必須有像布爾字段這樣的對象。所以當複選框被選中或取消選中時,這意味着布爾字段被更改爲false或true,然後列表視圖被再現。如果你遵循這種方式,那麼它必須很容易,首先通過Arraylist循環,並將所有布爾值更改爲false,然後將選定的值更改爲true,就是這樣,然後android會爲您刷新視圖。希望它有幫助。