我在应用程序中使用LiveData和数据绑定来填充视图模型中的回收器视图。
保存这些项的属性定义为
abstract val searchItems : LiveData<List<BindableItem<*>>>然而,数据绑定正在剥离LiveData的类型并生成一个无法编译的对象类型live data。
这是为上面的属性生成的代码:
android.arch.lifecycle.LiveData searchViewModelSearchItems = null;对于其他非泛型属性,将保留该类型,例如
android.arch.lifecycle.LiveData<java.util.List<com.example.feature.search.adapter.CarouselItem>> searchViewModelCarouselItems = null;如何在数据绑定中使用泛型?
发布于 2018-04-15 02:02:40
我还没有找到让数据绑定编译器接受泛型列表的方法,但一种变通方法是将列表定义为Any类型,然后在将项添加到回收器视图的绑定适配器中强制转换为List<BindableItem<*>>。不是很理想,但至少是可行的。
在视图模型中:
abstract val items: LiveData<List<Any>>在绑定适配器中:
fun setItems(
recyclerView: RecyclerView,
items: List<Any>?,
onItemClickListener: OnItemClickListener?
) {
val bindableItems = items as? List<BindableItem<*>>
/* do other stuff */
}https://stackoverflow.com/questions/49744879
复制相似问题