Podivné chování výběr ListView v systému Android

hlasů
3

Mám činnost, která se rozprostírá ListActivity. Tento seznam se opírá o vlastní adaptér, který se rozprostírá BaseAdapter.

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

Dělám jednoduchou (getSelectedItemPosition() == ListView.INVALID_POSITION)kontrolu v onPrepareOptionsMenu()zakázat položky, které vyžadují položky, které mají být vybrány.

A teď, co mám dělat po zahájení činnosti (akce se koná pod emulátoru, Ver.1.1), jak to vypadá:

  1. Hit nabídky - položky nabídky jsou zakázány - OK
  2. Vyberte položku pomocí kolečka myši a hit nabídky - položky nechat zapnutý -OK
  3. Klepněte kamkoli mimo seznam, opakovat 2). Položky nedostanou povolen - WTF?
  4. Začít od nuly, vyberte položku bít DEL a pohybuje myší. Výsledek je stejný jako pro 3.

Proč se tyto (3, 4) věci pořád se mnou děje? :) TIA.

Položena 20/02/2009 v 15:56
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
4

Spoléhání se na selectedItemPositionNa ploše ListViewmůže být nebezpečný přístup. Podle mých zkušeností, pokud je seznam ztratí fokus (kliknutím na něco jiného) Tento selectedItemPositiondostane nastavena INVALID_POSITION.

Zjednodušeně řečeno, pokud vaše položka nemá ten oranžový ‚zvýrazněn‘ vypadají na něj spolehnout na selectedItemPositionbytí null.

Jako alternativu, možná budete chtít mít na paměti vybranou položku přepsáním onItemClicka onItemSelectionmetody a uložení index vybrané položky, pak ji využít k ovládání volby v nabídce dostupnost.

Odpovězeno 20/02/2009 v 17:22
zdroj uživatelem

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