首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数据绑定和实时数据中使用泛型

在数据绑定和实时数据中使用泛型
EN

Stack Overflow用户
提问于 2018-04-10 11:33:07
回答 1查看 1K关注 0票数 1

我在应用程序中使用LiveData和数据绑定来填充视图模型中的回收器视图。

保存这些项的属性定义为

代码语言:javascript
复制
abstract val searchItems : LiveData<List<BindableItem<*>>>

然而,数据绑定正在剥离LiveData的类型并生成一个无法编译的对象类型live data。

这是为上面的属性生成的代码:

代码语言:javascript
复制
android.arch.lifecycle.LiveData searchViewModelSearchItems = null;

对于其他非泛型属性,将保留该类型,例如

代码语言:javascript
复制
android.arch.lifecycle.LiveData<java.util.List<com.example.feature.search.adapter.CarouselItem>> searchViewModelCarouselItems = null;

如何在数据绑定中使用泛型?

EN

回答 1

Stack Overflow用户

发布于 2018-04-15 02:02:40

我还没有找到让数据绑定编译器接受泛型列表的方法,但一种变通方法是将列表定义为Any类型,然后在将项添加到回收器视图的绑定适配器中强制转换为List<BindableItem<*>>。不是很理想,但至少是可行的。

在视图模型中:

代码语言:javascript
复制
abstract val items: LiveData<List<Any>>

在绑定适配器中:

代码语言:javascript
复制
fun setItems(
        recyclerView: RecyclerView,
        items: List<Any>?,
        onItemClickListener: OnItemClickListener?
) {
    val bindableItems = items as? List<BindableItem<*>>
    /* do other stuff */
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49744879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档