Как назначить данные на панель рейтинга с помощью привязки данных?

Я разрабатываю приложение, используя привязку данных. Я - мое приложение, у меня есть панель рейтинга, теперь мне нужно присвоить ему рейтинг с помощью привязки данных.

Вот кому я назначаю данные для адаптера xml и файла класса адаптера

xml выглядит так:

 <RatingBar
                android:id="@+id/course_rating"
                style="?android:attr/ratingBarStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignStart="@+id/course_price_tv"
                android:layout_below="@+id/course_price"
                android:layout_marginTop="@dimen/margin_5"
                android:rating="@{course.courseRating}" />

Класс адаптера выглядит так:

@BindingAdapter("android:rating")
    public void setRating(RatingBar view, float rating) {
        if (view.getRating() != rating) {
            view.setRating(rating);
        }
    }

Я прошел по этой ссылке, но у меня не получилось.


person Karthik    schedule 21.10.2017    source источник


Ответы (2)


метод должен быть "статическим"

@BindingAdapter("android:rating")
    public static void setRating(RatingBar view, String rating) {

        if (view!=null)
        {

            float rate= Float.parseFloat(rating);

            view.setRating(rate);

        }
    }
person jagadishlakkurcom jagadishlakk    schedule 04.06.2019

Я тестирую этот код прямо сейчас, в моем item_main_tab.xml:

<RatingBar
        style="?android:attr/ratingBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:rating="@{4}" />

И затем я проверяю сгенерированный код в ItemMainTabBinding.java:

public class ItemMainTabBinding extends android.databinding.ViewDataBinding  {
    @Override
    protected void executeBindings() {
        ...
        if ((dirtyFlags & 0x4L) != 0) {
            // api target 1

            this.mboundView2.setRating(4);  // see here
        }
    }
}

И все идет хорошо.

Таким образом, вы можете проверить сгенерированный код в build/generated/source/kapt/debug/... и убедиться, что метод setRating() был вызван правильно.

person fashare2015    schedule 21.10.2017