Передайте тип класса в атрибуте привязки данных - PullRequest
0 голосов
/ 24 июня 2019

Можем ли мы сделать что-то подобное в привязке данных Android

itemType="@{MyClass::class}"

Для адаптера привязки

@BindingAdapter(value = ["itemType"])
fun <T> func(
view: View,
itemType: Class<T>,
) {}

1 Ответ

0 голосов
/ 25 июня 2019

Нет, вы не передаете класс, скорее вы передадите объект данных. Вот пример:

<ListView
            android:id="@+id/bookList"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:items="@{viewmodel.items}" />

А вот адаптер привязки для этого:

@BindingAdapter("app:items")
@JvmStatic
fun setItems(listView: ListView, items: List<Book>) {
    with(listView.adapter as BookListAdapter) {
        replaceData(items)
    }
}

Учитывая, что viewmodel.items является LiveData, его обновление автоматически обновит представление списка.

...