Странное поведение выбора ListView на Android

голоса
3

Получил деятельность , которая расширяет ListActivity. Список подкреплен пользовательский адаптером , который простирается BaseAdapter.

getListView().setFocusable(true);
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);

Я делаю простую (getSelectedItemPosition() == ListView.INVALID_POSITION)проверку в , onPrepareOptionsMenu()чтобы отключить элементы , которые требуют элемента должны быть выбрано.

Теперь, что я делаю после запуска деятельности (действие происходит под эмулятором, ver.1.1) что это выглядит следующим образом:

  1. Хит меню - пункты меню отключены - OK
  2. Выберите элемент с помощью колеса мыши и ударить меню - пункты получить включены -ok
  3. Щелкните в любом месте за пределами списка, повторите 2). Элементы не получают включен - WTF?
  4. Начать с нуля, выберите пункт удара Del и перемещение мыши. Результат будет таким же, как на 3.

Почему это (3, 4) вещи продолжают со мной происходит? :) ТИА.

Задан 20/02/2009 в 15:56
источник пользователем
На других языках...                            


1 ответов

голоса
4

Опираясь на selectedItemPositionна ListViewможет быть опасный подход. По моему опыту , если список теряет фокус (нажав что - то еще) selectedItemPositionполучает значение INVALID_POSITION.

В принципе , если ваш товар не имеет , что оранжевое «выделен» посмотреть на него, рассчитывать на selectedItemPositionсущество нуля.

В качестве альтернативы вы можете помнить , выбранный пункт переопределяя onItemClickи onItemSelectionметоды сохранения и индекс выбранного элемента, а затем использовать это , чтобы контролировать свою доступность опций меню.

Ответил 20/02/2009 d 17:22
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more