Я пытаюсь реализовать соответствующее поведение в своем приложении для Android, если оно работает на устройстве с dPad.
Есть действие с ListView
. Выбранный элемент правильно изменяется, когда пользователь нажимает кнопки DPad. Однако я пытаюсь программно установить выбранный элемент в определенный момент в моем Java-коде. Я могу добиться этого
myListView.setSelection(position);
Это хорошо, но как я должен очистить выбор? Если элемент не выбран, метод myListView.getSelectedItemPosition()
возвращает -1
. Однако я не могу вызвать myListView.setSelection(-1)
, так как отрицательные значения игнорируются этим методом.
Как правильно снять выбранный элемент?
Я знаю много вопросов о переполнении стека, говорящих о «выбранном элементе в представлении списка», но они касаются переключателей и единственного выбора, а не навигации dPad.
myListView.setItemChecked(-1, true);
? - person George Mulligan   schedule 06.04.2016setItemChecked(-1, true)
, ниclearChoices()
не работают. Как я уже упоминал, этот пост посвящен выбору одного варианта, а не dPad. - person Cimlman   schedule 06.04.2016setSelection(position)
работает правильно с положительными значениями, кажется, вы сможете очистить выбор таким же образом. Но видимо нет... - person George Mulligan   schedule 06.04.2016setSelection(int)
говорит: Если указанная позиция выбора меньше 0, то будет выбран элемент в позиции 0. Это означает, что его нельзя использовать для очистки выделения. - person Cimlman   schedule 06.04.2016setSelection(-1)
. Я имел в виду то же самое, что указано в ответах на вопрос, на который я ссылался, просто чтобы быть ясным. - person George Mulligan   schedule 06.04.2016clearChoices
, а затемnotifyDataSetChanged
. Это тоже не имеет никакого эффекта. - person Cimlman   schedule 07.04.2016