J'ai un ListView qui utilise différents fichiers XML pour créer des vues et créer des éléments. L'un de ces fichiers XML contient un RatingBar. Tout s'affiche et semble excellent.RatingBar onClick
J'essaie de joindre un gestionnaire onClick à la RatingBar pour lancer une nouvelle activité. Ma RatingBar est de style? Android: attr/ratingBarStyleSmall; donc c'est juste un indicateur (je veux que le petit RatingBar clique pour amener l'utilisateur à une activité où il peut faire différentes évaluations).
Mon problème est le gestionnaire onClick pour le RatingBar n'est jamais exécuté. Ce qui le rend plus intéressant, c'est que j'ai utilisé le même code pour faire un LinearLayout cliquable et ça marche bien. Quelqu'un pourrait-il me dire pourquoi?
getView de mon adaptateur regarde comme tel:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position);
// get the View for this list item
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
switch (type) {
// ...
case TYPE_LOOKUP:
v = vi.inflate(R.layout.layout_itemlist_itemlookup, parent, false);
LinearLayout vLookup = (LinearLayout)v.findViewById(R.id.itemlist_lookup);
if (vStore != null) {
vStore.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// THIS HANDLER WORKS FINE
Intent intentLaunchLookup = new Intent(ActivityItemList.this, ActivityLookup.class);
startActivity(intentLaunchLookup);
}
});
}
break;
case TYPE_SEPARATOR:
v = vi.inflate(R.layout.layout_itemlist_itemseparator, parent, false);
RatingBar r = (RatingBar)v.findViewById(R.id.itemlist_rating);
if (r != null) {
r.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// THIS HANDLER DOES NOT GET EXECUTED (r IS NOT NULL; SO THIS SHOULD HAVE BEEN CREATED)
Intent intentLaunchRating = new Intent(ActivityItemList.this, ActivityRating.class);
startActivity(intentLaunchRating);
}
});
}
break;
// ...
}
}
// …
// return the created view
return v;
}
Quelqu'un a-t-il des commentaires supplémentaires à ce sujet? Je n'arrive toujours pas à exécuter le gestionnaire onClick. Comme vous pouvez le voir, j'utilise le même code pour un LinearLayout et ça marche bien. Mon RatingBar est défini sur clickable. J'ai défini des points de rupture dans les écouteurs onClick pour LinearLayout et RatingBar et seul le gestionnaire LinearLayout est exécuté. Remarque: La RatingBar n'est PAS dans LinearLayout. Comme vous pouvez le voir, ils sont dans deux fichiers XML différents. – Andrew