2013-09-04 7 views
0

Je crée une liste avec la référence du lien this. Maintenant j'essaie de mettre en évidence une ligne particulière dans listview. Lorsque j'appuie sur le bouton, la ligne particulière est mise en surbrillance pendant une seconde. Mais ce que je veux c'est que cette rangée reste dans la même couleur jusqu'à ce que j'appuie sur le bouton au rang suivant. mon listview estMettre une ligne en surbrillance dans la vue de liste

<ListView 
     android:id="@+id/mainListView" 
     android:layout_width="154dp" 
     android:layout_height="fill_parent" 
     android:layout_margin="10dp" 
     android:background="@drawable/layer_list" 
     android:dividerHeight="2px" 
     > 

et dans listview je place un textview et un imageview. Pour mettre en évidence la vue j'ai suivi le tutoriel this. Suis nouveau à android. Aide-moi à y parvenir. Merci d'avance ..

+2

Créer un sélecteur pour les cellules –

+0

conserver la position de l'élément qui est sélectionné et l'utiliser en conséquence dans getView - duplicata possible de http://stackoverflow.com/questions/9281000/android-keep-listviews-item- en surbrillance-une-une-a-été-cliquée – Atrix1987

+0

@user essayer ma réponse cela fonctionnera certainement.J'en ai mis deux en œuvre cette fonctionnalité – Developer

Répondre

0

Créer un sélecteur dans le dossier dessiccable listview_item_selection_effect.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_focused="true"> 
    <shape> 
     <solid android:color="#ffffff" /> 
    </shape> 
</item> 
    <item> 
    <shape> 
     <solid android:color="#00a7eb" /> 
    </shape> 
</item> 
</selector> 

dans votre mise en page qui a le ListView

android:background="?android:attr/activatedBackgroundIndicator" 

dans votre Activité Sur l'article ListView vous cliquez dessus

listView.setOnItemClickListener(new OnItemClickListener(){ 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3){ 
     listView.setSelector(R.drawable.listview_item_selection_effect); 
    listView.setItemChecked(position,true); 
    } 
}); 

Dans le ListView

android:choiceMode="singleChoice" 
+1

La position est l'élément sélectionné dans la liste – Developer

+0

Merci pour votre réponse. Mais je ne veux pas mentionner la position précédemment signifie sur le temps d'exécution quand je suis en appuyant sur le bouton haut listview devrait mettre en évidence la ligne particulière jusqu'à ce que j'appuie sur le suivant. – AndroidOptimist

+0

quel est le problème que vous rencontrez maintenant, cela fonctionne parfaitement pour moi si vous pouvez m'envoyer votre projet exemple je peux résoudre ce problème – Developer

0

a) Utiliser une mise en page personnalisée

MyLayout extends LinearLayout implements Checkable { 
    boolean check = false 
    public void setChecked(boolean checked) { 
      if (checked){ 
      //HIGHLIGHT THE BACKGROUND 
      }{ 
      // remove the background 
      } 

    } 
    public void toggle() { 
     setChecked(!check); 
    } 
    } 

b) Dans la coutume listview article utiliser MyLayout comme la mise en page

c) Dans votre activité mise en œuvre OnItemClickListener et onItemClick appel listview.setItemChecked(position, true);

Questions connexes