2

Androidのデータバインディングでこのようなことができますか

itemType="@{MyClass::class}"

バインディングアダプター用

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

1 に答える 1

0

いいえ、クラスを渡すのではなく、データ オブジェクトを渡します。次に例を示します。

<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 の場合、更新するとリストビューが自動的に更新されます。

于 2019-06-25T11:23:57.407 に答える