2009-02-20 4 views
2

Vous avez une activité qui s'étend ListActivity. La liste est sauvegardée par un adaptateur personnalisé qui s'étend BaseAdapter.Comportement de sélection Strange ListView sur Android

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

je fais une simple vérification (getSelectedItemPosition() == ListView.INVALID_POSITION) dans onPrepareOptionsMenu() pour désactiver les éléments qui nécessitent un élément à sélectionner.

Maintenant, ce que je fais après le lancement de l'activité (l'action se déroule sous l'émulateur, Ver.1.1) un à quoi il ressemble:

  1. menu Hit - les éléments de menu sont désactivées - OK
  2. Sélectionnez un élément avec la molette de la souris et le menu contextuel - les éléments sont activés -OK
  3. Cliquez n'importe où en dehors de la liste, répétez 2). Les éléments ne sont pas activés - WTF?
  4. Commencez à partir de zéro, sélectionnez un élément en appuyant sur Del et déplacez la souris. Le résultat est le même que pour 3.

Pourquoi ces choses (3, 4) continuent de m'arriver? :) TIA.

Répondre

4

S'appuyer sur le selectedItemPosition sur un ListView peut être une approche dangereuse. Dans mon expérience si la liste perd le focus (en cliquant sur autre chose) le selectedItemPosition obtient la valeur INVALID_POSITION.

Fondamentalement, si votre élément ne possède pas cette couleur orange en surbrillance, comptez sur selectedItemPosition étant null. Vous pouvez aussi vous souvenir de l'élément sélectionné en remplaçant les méthodes onItemClick et onItemSelection et en sauvegardant l'index de l'élément sélectionné, puis utilisez-le pour contrôler la disponibilité de votre option de menu.

+1

Tout d'abord, merci pour le livre haut de gamme! Aimé la façon dont il est écrit. Comme pour le ListView, j'ai _lve_ l'élément sélectionné/mis en évidence, toujours pas de chance (cohérente). Fonctionne directement après le démarrage de l'activité, mais pas après l'exécution d'autres tâches. Merci pour la méthode alternative. – yanchenko

Questions connexes