Androidのデータバインディングでこのようなことができますか
itemType="@{MyClass::class}"
バインディングアダプター用
@BindingAdapter(value = ["itemType"])
fun <T> func(
view: View,
itemType: Class<T>,
) {}
Androidのデータバインディングでこのようなことができますか
itemType="@{MyClass::class}"
バインディングアダプター用
@BindingAdapter(value = ["itemType"])
fun <T> func(
view: View,
itemType: Class<T>,
) {}
いいえ、クラスを渡すのではなく、データ オブジェクトを渡します。次に例を示します。
<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 の場合、更新するとリストビューが自動的に更新されます。