将 GreenDao LazyList 添加到列表中是不可能的?

Adding GreenDao LazyList into a list is not possible?

我有一个庞大的数据库,我正在尝试使用 greendao 中的 Limit 和 offset 选项执行分页。

我想要做的是,在列表中附加新的结果,其中包括使用 greenDao 查询生成器从数据库中获取的前 20 个结果,

这是我的做法

QueryBuilder qb = employeeDao.queryBuilder();
        qb.limit(20).offset(20*pageNum).orderDesc(EmployeeDao.Properties.Id);
        qb.build().forCurrentThread();
        List<Employee> tempEmployeeList = qb.list();
        employeeList.addAll(tempEmployeeList); // error occurred here

employeeList 是一个列表,其中包含前 20 名员工详细信息的列表。现在我想知道如何添加这个,

下面是我遇到的错误

java.lang.UnsupportedOperationException at org.greenrobot.greendao.query.LazyList.addAll(LazyList.java:205) at com.naziraschool.employeemanager.fragments.FragEmployeeList.refreshFragEmployeeListData(FragEmployeeList.java:294)

问题:

  1. 为什么我不能添加所有相同数据类型的列表(在我的例子中是员工)
  2. 我如何将列表(来自查询生成器)附加到上一个列表(员工列表)

请帮忙

嗯,它非常简单,我们需要做的就是使用 limit() 和 offset() 提供的函数,如所述 here

现在它很简单,但是由于页面上没有给出这样的例子,所以它给 greendao 用户的新手带来了问题。

首先我们需要了解limit和offset一起使用时的含义。 好吧,Limit() 很容易理解,它每次都会 return 提到数据量。如果我们提到 Limit(10) .

,假设它将 return 10 条记录

所以现在看看 offset with limit 。

use something like LIMIT x OFFSET y where x is the number of rows you want to retrieve at a time and y is your offset you want to start retrieving results from.

我在 SO 上读到了它,它确实帮助我构建了分页逻辑。我使用 this 来实现无尽的 recyclerview 。随后我在 EndlessRecyclerViewScrollListener 的 onLoadMore 函数中添加了分页逻辑。

我做的是这样的

 QueryBuilder qb = employeeDao.queryBuilder();
        qb.limit(10).offset(10*pageNum).orderDesc(EmployeeDao.Properties.Id);
        qb.build().forCurrentThread();
        List<Employee> tempEmployeeList = qb.list();
        employeeList.addAll(tempEmployeeList);

其中pageNum是一个整数值,每次调用onLoadMore时加1。所以首先 pageNum 变量的值为 1,然后为 2,依此类推。 ...

我希望这会帮助一些人理解一点。