Не удается снять флажок с отмеченных элементов в setMultiChoiceItems - PullRequest
2 голосов
/ 02 марта 2011

Я использую диалоговое окно с предупреждением, которое показывает список проверяемых элементов. Я заполняю список, используя setMultiChoiceItems с массивом проверенных элементов. Вот код:

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

На самом деле это работает (проверенные элементы проверяются во время выполнения), но я не могу снять эти отмеченные элементы (определенные на вкладке tabChecked). Нужно ли снимать их вручную в прослушивателе (например, здесь ноль)?

Спасибо

Ответы [ 3 ]

3 голосов
/ 25 марта 2011

Вам просто нужно иметь прослушиватель щелчков выбора, а не нуль:

setMultiChoiceItems(m_tabsList, tabChecked, new myListener() )

Слушатель может быть пустым, его просто нужно определить:

public class myListener implements DialogInterface.OnMultiChoiceClickListener{
    public void onClick( DialogInterface dialog, int clicked ,boolean ceva) {
    }       
}
0 голосов
/ 24 марта 2013

Ответы Каталина и Замбби верны, есть и другой способ решения этой проблемы.Используйте этот метод для параметра слушателя.

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

    public void onClick(DialogInterface dialogInterface, int i, boolean b){
    ((AlertDialog) dialogInterface).getListView().setItemChecked(i, false);
    }
};
0 голосов
/ 08 июня 2012

Для снятия отметки по коду вам необходимо использовать метод 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);
    }
}
...