Tengo un ListView que utiliza diferentes archivos XML para crear vistas y crear elementos. Uno de estos archivos XML contiene una RatingBar. Todo se muestra y se ve excelente.RatingBar onClick
Estoy tratando de conectar un controlador onClick a la Barra de clasificación para iniciar una nueva actividad. Mi RatingBar es de estilo? Android: attr/ratingBarStyleSmall; por lo tanto, es solo un indicador (quiero que el pequeño clic de RatingBar lleve al usuario a una Actividad en la que pueden hacer varias clasificaciones).
Mi problema es que el controlador onClick para la barra de calificación nunca se ejecuta. Lo que lo hace más interesante es que he usado el mismo código para hacer clic en LinearLayout y funciona bien. ¿Alguien podría decirme por qué?
getView Mi adaptador de mira como tal:
@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;
}
¿Alguien tiene comentarios adicionales sobre esto? Todavía no puedo ejecutar el controlador onClick. Como puede ver, estoy usando el mismo código para LinearLayout y funciona bien. My RatingBar está configurado para hacer clic. Establecí puntos de interrupción dentro de los oyentes onClick tanto para LinearLayout como para RatingBar y solo se ejecuta el controlador LinearLayout. Nota: The RatingBar NO está dentro de LinearLayout. Como puede ver, están en dos archivos XML diferentes. – Andrew