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