1

我正在尝试使用 android 分页库在我的应用程序中实现分页。但我被困在一个地方。数据源不是从工厂创建的。片段如下。

private fun getLivePagedListBuilder(queryString: String): LivePagedListBuilder<Int, News> {

        val dataSourceFactory = object : DataSource.Factory<Int, News>() {
            override fun create(): DataSource<Int, News> {
                return NewsDataSource(queryString)
            }
        }
        return LivePagedListBuilder(dataSourceFactory, config)
    }

1. create 方法没有被调用。因此,该方法内部的返回不会触发。

我的数据源

class NewsDataSource(val searchQuery: String) : PageKeyedDataSource<Int, News>() {
        override fun loadInitial(params: LoadInitialParams<Int>, callback: LoadInitialCallback<Int, News>) {
            api.searchNews(searchQuery, Constants.perPageLimit, 1)
                .enqueue(object : Callback<NewsResponse> {
                    override fun onFailure(call: Call<NewsResponse>, t: Throwable) {
                        Log.d("TAG1", "Failure")
                    }

                    override fun onResponse(call: Call<NewsResponse>, response: Response<NewsResponse>) {
                        callback.onResult(response.body()?.news, response.body()?.page - 1, response.body()?.page + 1)
                    }
                })
        }
    }

API返回页码,我打算在滚动结束时加载下一页

  1. 什么决定了 Key in 的数据类型DataSource.Factory<Int, News>()

我真的坚持这一点:(

4

0 回答 0