更新Recycler视图并为屏幕旋转创建可分区(这里最好的做法是什么?)
我一直在努力学习Kotlin两个月。 我在Kotlin做了一个Reddit应用程序,在Recycler View
Grid Layout
显示缩略图
将我的情况情景化
在MainActivity
的apiCall
方法中,我调用RedditAPI
,在其中使用RedditAPI
进行网络调用,并根据ResultValue
object
class
返回Observable
然后,我在MainActivity
检索对象,并将其显示在Recycler View
,这很有效。
但是,当我实现无限滚动,并有新的对象生成每次向下滚动时,我不得不将所有值添加到一个mutable list
cumulativeValue
,更改我的适配器的结构,只是调用adapter.notifydatasetchange()
滚动,也工作出来罚款。
private val cumulativeValues = mutableListOf()
然后在onscrolllistener
redditAPI.callParameters(location, page, address.queryLimit, afterValue) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( { result -> cumulativeValues.addAll(result.data.children.toMutableList())
我的代码工作,但我想实现屏幕旋转,现在我不知道我是否可以做到这一点parcelables,因为我把所有从网络调用检索到的值添加到一个可变的列表
我使用kotlin插件来实现parcelable
类的另一个类, 这里有另一个类的RedditChildrenDetails
作为参数,我也为这个类实现了parcelable(在同一个链接中)。
class RedditChildrenResponse(val data: RedditChildrenDetails) : Parcelable { ...
class RedditChildrenDetails( val url: String, val title: String, val thumbnail: String, val permalink: String, val subreddit: String ) : Parcelable { ...
现在我可以parcelable这两个类,但所有我的值被存储在一个可变的列表cumulativeValues
,我在MainActivity
生成,我不明白我怎么可以连接到我所做的可变列表值。
我的问题是:有没有更好的方式将数据添加到Recycler View
而不是将所有内容都添加到mutable list
这样我可以更轻松地处理屏幕旋转? 我应该使用parcelables保存实例状态吗? 我所有的值都在一个可变的列表中,如果我可以将它存储在一个包中,但是不会有一个putMutableList(),我该怎么做?