请教下 ViewModel 和 Adapter 该如何结合以实现动态加载

2021-08-14 22:09:16 +08:00
 pigspy

如题,我的 ViewModel 类中有一个列表结构的数据,需要动态加载,代码如下:

class TimelineViewModel : ViewModel() {
    val timelines = MutableLiveData<List<TimelineModel>>(emptyList())

    private var nextTime = System.currentTimeMillis()

    fun getTimeline() {
    	viewModelScope.launch {
            try {
                val respData = Repository.getTimeline(nextTime)
                if (respData.data != null) {
                    nextTime = respData.data.feeds.nextTime
                    val timelineModels = respData.data.feeds.data.filterNotNull().map {
                        TimelineModel(it)
                    }
                    timelines.value = timelines.value.let {
                        if (it == null) {
                            timelineModels
                        } else {
                            it + timelineModels
                        }
                    }
                }
            } catch (e: Exception) {
                Log.e(TAG, "Network Request Fail", e)
            }
        }
    }
}
3998 次点击
所在节点    Android
3 条回复
omysho
2021-08-14 22:38:57 +08:00
有个东西叫 DiffUtil

还有个东西叫 AsyncListDiffer

还有个东西叫 ListAdapter 继承自 Recycler.Adapter 需要一个 ItemDiffCallback 作为构造参数
pigspy
2021-08-15 10:18:35 +08:00
@omysho

非常感谢
122006
2021-08-24 19:57:24 +08:00
androidx 的 recycleview 自带,直接继承 listadapter 就行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/795820

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX