Paging Library太棒了。但我发现缺乏这个功能:
PageKeyedDataSource
:调用loadInitial
时顶部的视图,调用loadAfter
时列表底部的视图。调用callback
时,视图应该消失。 由于现在不可能,有没有人知道使用PagingLibrary的方法?至少在同一列表中使用不同视图的方法。
答案 0 :(得分:0)
主要思想是保留对由数据源工厂创建的数据源的引用。 以下是https://github.com/googlesamples/android-architecture-components/tree/master/PagingWithNetworkSample
的代码段class SubRedditDataSourceFactory(
private val redditApi: RedditApi,
private val subredditName: String,
private val retryExecutor: Executor) : DataSource.Factory<String,
RedditPost>() {
val sourceLiveData = MutableLiveData<PageKeyedSubredditDataSource>()
override fun create(): DataSource<String, RedditPost> {
val source = PageKeyedSubredditDataSource(redditApi, subredditName,
retryExecutor)
sourceLiveData.postValue(source)
return source
}
}
在此代码示例中,“ sourceLiveData”发布活动数据源。 数据源又可以将所有相关信息暴露给视图,例如网络状态和指示符(如果首次加载完成)
为了添加刷新行为,请使用SwipeRefreshLayout将回收器视图包装起来,如下所示。现在您可以访问数据源了,您可以使它无效,并且视图将刷新
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout android:id="@+id/swipe_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
app:layoutManager="LinearLayoutManager"/>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>