Ich habe eine ListView, die verschiedene XML-Dateien verwendet, um Ansichten zu erstellen und Elemente aus zu erstellen. Eine dieser XML-Dateien enthält eine RatingBar. Alles zeigt und sieht gut aus.RatingBar onClick
Ich versuche, einen onClick-Handler an die RatingBar anzuhängen, um eine neue Aktivität zu starten. Meine RatingBar ist von Stil? Android: attr/ratingBarStyleSmall; Es ist also nur ein Indikator (ich möchte, dass der kleine RatingBar-Klick den Benutzer zu einer Aktivität führt, wo er verschiedene Bewertungen vornehmen kann).
Mein Problem ist der OnClick-Handler für die RatingBar wird nie ausgeführt. Was es interessanter macht, ist, dass ich denselben Code verwendet habe, um ein LinearLayout klickbar zu machen, und es funktioniert gut. Kann mir jemand sagen warum?
Mein Adapters getView sieht aus, als solche:
@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;
}
Hat jemand weitere Kommentare dazu? Ich kann den onClick-Handler immer noch nicht ausführen. Wie Sie sehen können, verwende ich den gleichen Code für ein LinearLayout und es funktioniert gut. Meine Bewertungsleiste ist auf anklickbar eingestellt. Ich habe Breakpoints innerhalb der onClick-Listener sowohl für LinearLayout als auch für die RatingBar gesetzt, und nur der LinearLayout -Handler wird ausgeführt. Hinweis: Die RatingBar befindet sich NICHT innerhalb des LinearLayout. Wie Sie sehen können, sind sie in zwei verschiedenen XML-Dateien. – Andrew