2010-06-20 8 views
1

J'ai un ListView qui fonctionne très bien, sauf pour ce petit problème. Je peux utiliser la trackball/dpad pour monter et descendre ma liste, et l'arrière-plan change en fonction de la rangée qui a le focus. Mais quand je touche la rangée (clic ou clic long), il n'y a pas de changement de fond qui me permet de savoir ce qui a été focalisé. J'ai essayé de régler 'focusable' et 'focusable in touch mode' sur true sur les lignes, mais ça ne marche toujours pas.Les éléments ListView n'affichent pas le focus lorsque vous les touchez

Juste au cas où il importe en quelque sorte:

  • Je suis en train onClickListeners pour chaque ligne.
  • La ligne est composée de LinearLayouts, TextViews et d'un seul ImageView .
  • Focalisable/cliquable est 'vrai' pour chaque ligne. N'ont pas spécifié de valeurs pour ceux-ci sur ListView.
  • Trackable agit de manière amusante. Je ne peux passer d'une ligne à l'autre qu'après avoir touché le ListView. Si je fais défiler la boule de commande au-dessus du premier élément, il m'est impossible de revenir dans la liste.

Des pensées?

Répondre

2

Je peux utiliser la boule de commande/dpad pour déplacer haut et en bas ma liste, et les changements de fond selon lequel ligne est mise au point.

Non, ce n'est pas le cas. L'arrière-plan change en fonction de la ligne sélectionnée. La sélection et la concentration ne sont pas tout à fait la même chose.

Mais quand je touche la ligne (ou cliquez sur clic long), il n'y a pas de fond changement me laisser savoir ce qui a été concentré.

"In touch mode, there is no focus and no selection."

+0

Merci de me guider dans la bonne direction. J'aimerais quand même que l'utilisateur voie la ligne sur laquelle il a cliqué (en mode tactile). Des suggestions/conseils à ce sujet? –

+1

@colinodell: Ajoutez des cases à cocher ou des boutons radio en utilisant 'setChoiceMode()' (ou 'android: choiceMode' de votre modèle) et des modifications appropriées à vos dispositions de ligne pour utiliser' CheckedtextView'. – CommonsWare