У меня есть ListView, который использует разные файлы XML для создания представлений и извлечения элементов из. Один из этих файлов XML содержит RatingBar. Все отображается и выглядит превосходно.RatingBar onClick
Я пытаюсь подключить обработчик onClick к RatingBar для запуска нового действия. Мой рейтингBar имеет стиль? Android: attr/ratingBarStyleSmall; так что это всего лишь индикатор (я хочу, чтобы маленький RatingBar щелкнул мышкой, чтобы перейти к Activity, где они могут выполнять различные оценки).
Моя проблема заключается в том, что обработчик onClick для RatingBar никогда не выполняется. Что делает его более интересным, так это то, что я использовал тот же код, чтобы сделать LinearLayout доступным для кликов, и он отлично работает. Может ли кто-нибудь сказать мне, почему?
GetView моего адаптера выглядит так:
@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;
}
У кого есть дополнительные комментарии по этому вопросу? Я все еще не могу заставить обработчик onClick выполнить. Как вы можете видеть, я использую тот же код для LinearLayout, и он отлично работает. Мой RatingBar настроен на кликабельность. Я установил точки останова внутри слушателей onClick как для LinearLayout, так и для RatingBar, и выполняется только обработчик LinearLayout. Примечание: RatingBar НЕ находится внутри LinearLayout. Как вы можете видеть, они находятся в двух разных файлах XML. – Andrew