Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 位置数据源不';不要加载所有数据_Android_Android Paging - Fatal编程技术网

Android 位置数据源不';不要加载所有数据

Android 位置数据源不';不要加载所有数据,android,android-paging,Android,Android Paging,我正在尝试使用位置数据源。我已经创建了以下虚拟源 class ContactsDataSource : PositionalDataSource<Contact>() { override fun loadRange(params: LoadRangeParams, callback: LoadRangeCallback<Contact>) { val c = ArrayList<Contact>() for (i i

我正在尝试使用位置数据源。我已经创建了以下虚拟源

class ContactsDataSource : PositionalDataSource<Contact>() {
    override fun loadRange(params: LoadRangeParams, callback: LoadRangeCallback<Contact>) {

        val c = ArrayList<Contact>()
        for (i in params.startPosition..params.loadSize) {
            c.add(Contact("$i contact"))
        }
        callback.onResult(c)

        Logger.d("loadRange: StartPos: ${params.startPosition} LoadSize: ${params.loadSize}")

    }

    override fun loadInitial(params: LoadInitialParams, callback: LoadInitialCallback<Contact>) {
        Logger.d("Load Initial: PageSize: ${params.pageSize} LoadSize: ${params.requestedLoadSize}")
        val c = ArrayList<Contact>()
        for (i in 0 until params.requestedLoadSize) {
            c.add(Contact("$i contact"))
        }

        callback.onResult(c, 0, 1000)
    }
}

class ContactsDsFactory : DataSource.Factory<Int, Contact>() {
    override fun create(): DataSource<Int, Contact> {
        return ContactsDataSource()
    }

}
这些是日志

D/PagedLab: Load Initial: PageSize: 20 LoadSize: 60
D/PagedLab: loadRange: StartPos: 60 LoadSize: 20

任何帮助都将不胜感激

我对(params.startPosition..params.loadSize中的I)使用了错误的范围
。在设置正确的范围
params.startPosition+params.loadSize

后工作,我创建了一个扩展
位置数据源的类
MovieListDataSource
。 事实上,您必须使用
PagedListAdapter
,这将调用
loadAround(int)
。如果一切正常,那么就不会有加载问题。单击,您将获得我的实现。希望这对你有帮助

D/PagedLab: Load Initial: PageSize: 20 LoadSize: 60
D/PagedLab: loadRange: StartPos: 60 LoadSize: 20