RatingBar onClick

У меня есть ListView, который использует различные XML-файлы, чтобы создать Представления и сделать объекты из. Один из этих XML-файлов содержит RatingBar. Все отображается и выглядит превосходным.

Я пытаюсь присоединить onClick обработчик к RatingBar для запуска нового Действия. Мой RatingBar имеет стиль? android:attr/ratingBarStyleSmall; таким образом, это - просто индикатор (я хочу, чтобы маленький щелчок RatingBar взял пользователя к Действию, где они могут сделать различные оценки).

Моей проблемой является 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;
}
21
задан Andrew 9 August 2010 в 21:15
поделиться

2 ответа

Я решил эту проблему, заключив RatingBar в LinearLayout и присоединив прослушиватель onClick к LinearLayout. Я не люблю это делать, но это работает. По какой-то загадочной причине onClick не выполняется для RatingBar.

5
ответ дан 29 November 2019 в 06:19
поделиться

В ListView вам обычно нужно решить, хотите ли вы, чтобы элементы представления списка были кликабельными, или элемент, содержащийся внутри представления списка. Возвращает ли r.isClickable() значение true?

Возможно, вам повезет больше, если вы установите clickable в false для RatingBar, и вместо этого будете использовать onClickListener listView для обработки событий click на строке listView.

1
ответ дан 29 November 2019 в 06:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: