2009-08-07 6 views
4

Dans Android, je veux présenter l'utilisateur avec une liste. Lorsqu'un élément de la liste est sélectionné, une action est effectuée et cet élément de liste n'est plus sélectionnable. Il est également "grisé" ou similaire pour indiquer qu'il ne peut pas être sélectionné la prochaine fois que la liste est affichée. J'ai vu le remplacement de isSelectable() dans l'adaptateur, mais je crois que cela provoque le traitement de l'élément comme un séparateur, ce qui provoque des problèmes visuels. Et je n'ai pas trouvé le moyen de "griser" un objet. Des idées? Merci ...Android liste avec 'gris' articles

Répondre

2

Vous avez besoin que la vue soit désactivée. Si vous créez les vues, appelez simplement .setDisabled (boolean) dans la vue de dessus. La définition de l'élément de liste à désactiver ne fonctionne pas très bien dans mon expérience.

2

Voici la solution que j'utilise. J'ai mis en place un OnItemClickListener pour ma ListView. Quand un élément de la liste est cliqué, je prends le passé dans View et j'appelle setEnabled (false) dessus. Cela grise l'élément. Cependant, les clics suivants sur cet élément appellent toujours la méthode onItemClick. Ainsi, vous devrez vérifier chaque clic si l'élément est activé/désactivé et agir en conséquence.

8

En ce qui concerne le vieillissement d'un article. Je ne suis pas sûr que ce soit la meilleure façon, mais c'est ce que je fais:

view.setAlpha(75); 
view.setBackgroundColor(Color.GRAY); 

Je fais essentiellement l'élément transparent, puis définir la couleur d'arrière-plan gris. Si vous réutilisez vos éléments de liste, vous devez également les modifier à leur état d'origine si la condition est pas remplie, à savoir:

view.setAlpha(255); 
view.setBackgroundColor(Color.WHITE); 

qui est, si votre état d'origine était pas la transparence et la couleur de fond était blanc .

+0

Remarque: la vue doit être une vue Android prenant en charge setAlpha. Un exemple d'une telle vue est ImageView. –

+0

setAlpha (float) pour la classe View est disponible uniquement à partir du niveau 11 API. http://developer.android.com/reference/android/view/View.html#setAlpha(float) –

+6

setAlpha a une plage de 0 à 1. Des valeurs comme 255 n'ont pas de sens. – OneWorld