2011-10-11 2 views
3

L'une des activités que je construis contient un ListView et un GridView. Le contenu de la grille sera mis à jour en fonction de l'élément sélectionné dans ListView. Maintenant, j'utilise un sélecteur pour mettre en évidence l'élément sélectionné dans ListView en changeant son arrière-plan. Mais lorsque ListView perd le focus, l'élément sélectionné n'est plus mis en surbrillance. Y a-t-il un moyen de mettre en surbrillance l'élément de liste même après que le focus est perdu par la vue de liste?Comment mettre en surbrillance l'élément de liste sélectionné même après avoir perdu le focus?

+0

Je suis un succès partiel en utilisant 'choiceMode =" singleChoice "'. Et le sélecteur a bien fonctionné quand j'ai utilisé CheckedTextView pour choisir l'arrière-plan. Mais je fais face à certains problèmes lorsque j'utilise le CheckedLinearLayout personnalisé en tant que mise en page pour chaque élément. Je vais mettre à jour ce fil une fois que je l'ai réparé. – Gunanaresh

Répondre

0

Je pense que vous voulez maintenir l'état de l'élément cliqué de certaines listes. Pour cela, vous pouvez utiliser une ArrayList booléenne pour conserver l'état de chaque ligne de la liste. Et vous pouvez utiliser cette ArrayList dans le getView() de votre carte. Définir l'arrière-plan en fonction de l'état. par exemple. Définissez l'image d'arrière-plan ou la couleur de la vue dans getView(). Here est une idée dont je parle. Vous pouvez l'utiliser aussi pour votre usage.

1

Définir vos sélecteur pour reconnaître le activé état

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Selected Item --> 
    <item android:state_selected="true" 
     android:drawable="@android:color/holo_blue_light" /> 
    <item android:state_activated="true" 
     android:drawable="@android:color/holo_blue_light" /> 

    <!-- Default Item --> 
    <item android:state_selected="false" 
     android:drawable="@android:color/white" /> 
</selector> 

Et non seulement sélectionnez, mais activer il onListItemClick

@Override 
    public void onListItemClick(ListView listView, View view, int position, 
      long id) { 
     super.onListItemClick(listView, view, position, id); 

     view.setSelected(true); 
     view.setActivated(true); 
} 
Questions connexes