将 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)
问题:
- 为什么我不能添加所有相同数据类型的列表(在我的例子中是员工)
- 我如何将列表(来自查询生成器)附加到上一个列表(员工列表)
请帮忙
嗯,它非常简单,我们需要做的就是使用 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,依此类推。 ...
我希望这会帮助一些人理解一点。
我有一个庞大的数据库,我正在尝试使用 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)
问题:
- 为什么我不能添加所有相同数据类型的列表(在我的例子中是员工)
- 我如何将列表(来自查询生成器)附加到上一个列表(员工列表)
请帮忙
嗯,它非常简单,我们需要做的就是使用 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,依此类推。 ...
我希望这会帮助一些人理解一点。