Android 在不使用RecyclerView的情况下使用PagedList
我看到的所有使用PagedList的示例都将其与RecyclerView结合使用。我有一个场景,我想使用分页库,但不需要任何UI。例如,我最初有一个Recyclerview,它通过使用绑定到PagedListAdapter的PagedList来检索数据列表。然后,用户可以删除列表中他们不想要的项目并保存列表 问题是,列表可能很大,用户不一定要滚动整个列表。当用户去保存他们的选择时,我需要再次运行生成RecyclerView项的查询,只有这一次,这些项由我的ViewModel或其他业务对象层处理。用户可以点击后退按钮,离开屏幕,开始保存。他们可以在储蓄尚未完成的时候这样做。因此,此数据的保存不能绑定到UI,因为一旦活动或片段被销毁,将不再接收分页数据 我所看到的所有示例都将LiveData与观察者一起使用。由于根据要保存的项目数,保存可能需要很长时间,因此必须批量检索所有记录。根据PagedList文档,load around方法应该加载下一批记录。我没能让它工作。所以我有两个问题。如何避免使用LiveData获取批处理记录,以及如何让load绕过以加载下一批记录。以下是我的ViewModel中的代码:Android 在不使用RecyclerView的情况下使用PagedList,android,pagedlist,Android,Pagedlist,我看到的所有使用PagedList的示例都将其与RecyclerView结合使用。我有一个场景,我想使用分页库,但不需要任何UI。例如,我最初有一个Recyclerview,它通过使用绑定到PagedListAdapter的PagedList来检索数据列表。然后,用户可以删除列表中他们不想要的项目并保存列表 问题是,列表可能很大,用户不一定要滚动整个列表。当用户去保存他们的选择时,我需要再次运行生成RecyclerView项的查询,只有这一次,这些项由我的ViewModel或其他业务对象层处理。
fun getConnectionsFromDB(forSearchResults: Boolean): LiveData<PagedList<Connection>> {
return LivePagedListBuilder(connections.getConnectionsFromDB(forSearchResults), App.context.repository.LIST_PAGE_SIZE).build()
}
fun storeGroupConnections(groupId: String, connections: PagedList<Connection>) {
val groupConnections = mutableListOf<GroupConnection>()
connections.forEach { connection ->
if (connection != null)
groupConnections.add(GroupConnection(groupId = groupId, connectionId = connection.rowid))
}
val disposable = Observable.fromCallable { groups.storeGroupConnections(groupConnections) }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ },
{ ex ->
App.context.displayErrorMessage(R.string.problem_storing_connections)
},
{
connections.loadAround(groupConnections.size - 1)
}
)
disposables.add(disposable)
}
fun storeGroupConnections(groupId: String) {
connectionsViewModel.getConnectionsFromDB(args.forSearchResults).observe(this, Observer { connections ->
groupsViewModel.storeGroupConnections(groupId, connections)
})
}