Очистить выбор в ListView

Я пытаюсь реализовать соответствующее поведение в своем приложении для Android, если оно работает на устройстве с dPad.

Есть действие с ListView. Выбранный элемент правильно изменяется, когда пользователь нажимает кнопки DPad. Однако я пытаюсь программно установить выбранный элемент в определенный момент в моем Java-коде. Я могу добиться этого

myListView.setSelection(position);

Это хорошо, но как я должен очистить выбор? Если элемент не выбран, метод myListView.getSelectedItemPosition() возвращает -1. Однако я не могу вызвать myListView.setSelection(-1), так как отрицательные значения игнорируются этим методом.

Как правильно снять выбранный элемент?

Я знаю много вопросов о переполнении стека, говорящих о «выбранном элементе в представлении списка», но они касаются переключателей и единственного выбора, а не навигации dPad.


person Cimlman    schedule 06.04.2016    source источник
comment
Пробовали ли вы идеи из этого поста, например myListView.setItemChecked(-1, true);?   -  person George Mulligan    schedule 06.04.2016
comment
@ Джордж Маллиган Я попробовал это по вашему предложению. :) Ни setItemChecked(-1, true), ни clearChoices() не работают. Как я уже упоминал, этот пост посвящен выбору одного варианта, а не dPad.   -  person Cimlman    schedule 06.04.2016
comment
Я понимаю. Но поскольку вы упомянули, что setSelection(position) работает правильно с положительными значениями, кажется, вы сможете очистить выбор таким же образом. Но видимо нет...   -  person George Mulligan    schedule 06.04.2016
comment
Просто примечание: Javadoc to setSelection(int) говорит: Если указанная позиция выбора меньше 0, то будет выбран элемент в позиции 0. Это означает, что его нельзя использовать для очистки выделения.   -  person Cimlman    schedule 06.04.2016
comment
Точно так же я не имел в виду setSelection(-1). Я имел в виду то же самое, что указано в ответах на вопрос, на который я ссылался, просто чтобы быть ясным.   -  person George Mulligan    schedule 06.04.2016
comment
@Cimlman Попробуйте вызвать notifyDataSetChanged(); после clearChoices();   -  person Rami    schedule 06.04.2016
comment
@Rami Пробовал clearChoices, а затем notifyDataSetChanged. Это тоже не имеет никакого эффекта.   -  person Cimlman    schedule 07.04.2016