Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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 在不使用RecyclerView的情况下使用PagedList_Android_Pagedlist - Fatal编程技术网

Android 在不使用RecyclerView的情况下使用PagedList

Android 在不使用RecyclerView的情况下使用PagedList,android,pagedlist,Android,Pagedlist,我看到的所有使用PagedList的示例都将其与RecyclerView结合使用。我有一个场景,我想使用分页库,但不需要任何UI。例如,我最初有一个Recyclerview,它通过使用绑定到PagedListAdapter的PagedList来检索数据列表。然后,用户可以删除列表中他们不想要的项目并保存列表 问题是,列表可能很大,用户不一定要滚动整个列表。当用户去保存他们的选择时,我需要再次运行生成RecyclerView项的查询,只有这一次,这些项由我的ViewModel或其他业务对象层处理。

我看到的所有使用PagedList的示例都将其与RecyclerView结合使用。我有一个场景,我想使用分页库,但不需要任何UI。例如,我最初有一个Recyclerview,它通过使用绑定到PagedListAdapter的PagedList来检索数据列表。然后,用户可以删除列表中他们不想要的项目并保存列表

问题是,列表可能很大,用户不一定要滚动整个列表。当用户去保存他们的选择时,我需要再次运行生成RecyclerView项的查询,只有这一次,这些项由我的ViewModel或其他业务对象层处理。用户可以点击后退按钮,离开屏幕,开始保存。他们可以在储蓄尚未完成的时候这样做。因此,此数据的保存不能绑定到UI,因为一旦活动或片段被销毁,将不再接收分页数据

我所看到的所有示例都将LiveData与观察者一起使用。由于根据要保存的项目数,保存可能需要很长时间,因此必须批量检索所有记录。根据PagedList文档,load around方法应该加载下一批记录。我没能让它工作。所以我有两个问题。如何避免使用LiveData获取批处理记录,以及如何让load绕过以加载下一批记录。以下是我的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)
    })
}