2011-03-02 27 views
2

我正在使用顯示可選項目列表的警報對話框。我使用setMultiChoiceItems和一系列檢查項填充列表。 下面是代碼:無法取消選中setMultiChoiceItems中的checkedItems

boolean[] bChecked={false, true, true}; 
alertDlgEncrypt.setMultiChoiceItems(m_tabsList, tabChecked, null); 

它的實際工作(檢查的項目是在運行時檢查),但我無法取消這些檢查項目(在tabChecked選項卡中定義)。我是否必須在偵聽器中手動取消選中它們(例如,在這裏爲例)?

感謝,

回答

3

你只需要的而不是零到有選擇的點擊收聽,:

setMultiChoiceItems(m_tabsList, tabChecked, new myListener()) 

偵聽器可以是空的,它只是被定義爲:

public class myListener implements DialogInterface.OnMultiChoiceClickListener{ 
    public void onClick(DialogInterface dialog, int clicked ,boolean ceva) { 
    }  
} 
0

通過代碼取消選中您需要使用setItemChecked方法,如下所示:

builder.setMultiChoiceItems(filterNames, isPlayerFiltered, new DialogInterface.OnMultiChoiceClickListener(){ 

    public void onClick(DialogInterface dialogInterface, int i, boolean b){ 
    isPlayerFiltered[i] = false; 
    ((AlertDialog) dialogInterface).getListView().setItemChecked(i, false); 
    } 
} 
0

Catalin's和Zammbi的回答是正確的,這個問題也有另一種方法。使用此方法用於偵聽器參數。

private DialogInterface.OnMultiChoiceClickListener myListener = new DialogInterface.OnMultiChoiceClickListener(){ 

    public void onClick(DialogInterface dialogInterface, int i, boolean b){ 
    ((AlertDialog) dialogInterface).getListView().setItemChecked(i, false); 
    } 
}; 
相關問題