2010-11-27 3 views
1

Je souhaite activer la surbrillance orange qui se produit lorsque j'appuie sur une ligne listView.Mettez en surbrillance la ligne ListView lorsqu'un élément de ligne de l'interface utilisateur est touché

Si l'événement onclick a été généré à partir de la ligne elle-même, je peux ajuster le hightlight en définissant le style de la listview. Cependant, dans mon cas, l'événement click est généré par TextView en dessous avec l'événement onclick attaché à celui-ci.

Lorsqu'un événement tactile se produit, Listview ne sait pas qu'un clic est en cours. Il ne reçoit pas d'événement focalisé ou pressé.

Existe-t-il une technique de bullage ou de capture que je pourrais utiliser comme Flex? Ou toute suggestion/solution?

Merci beaucoup.

Répondre

10
View tempView = null; // Class Variable to temporary store Clicked Row's view 

Méthode:

public void onItemClick(AdapterView parent, View v, int position,long id) 
{ 
    listView.setFocusable(true); 
    listView.setSelected(true); 
    v.setBackgroundColor(Color.LTGRAY); // CHANGE COLOR OF SELECTED ROW HERE> 
    selectedId = (int)id; 

    if(tempView != null){ 
     //If row is already clicked then reset its color to default row color 
     tempView.setBackgroundColor(Color.TRANSPARENT); 

    } 
    tempView = v; 

}

Hope this helps. Merci :)

+0

Fonctionne très bien. J'aimerais avoir le privilège de voter pour vous. – Bamboo

+0

Merci pour le complément. Une fois que j'ai sous aller même problème et trouvé la solution moi-même, partagé avec la communauté .. –

+0

Cher Piyushnp, Merci pour votre aide .... Je suis également confronté au même problème. J'utilise le BaseAdapter pour gonfler la Listview. A l'intérieur de la Listview il y a 3 widgets Textview, Edittext et Edittext ces trois widgets sont dans une seule ligne. Lorsque je clique sur l'un des points saillants de la ligne (la couleur doit être affichée sur les trois widgets). Pour montrer à l'utilisateur que vous avez sélectionné cette ligne lorsqu'il clique sur une autre ligne, la couleur précédente devient normale et la ligne suivante sélectionnée devient couleur. J'ai essayé ci-dessus mais mon exigence n'est pas satisfaite. –

Questions connexes