相关疑难解决方法(0)

Recyclerview + Content provider + CursorLoader

我在SQLite数据库中有一些数据.我有一个内容提供程序,它将从数据库中获取数据.现在的问题是如何实现cursorLoader与recyclerview一起工作?

此外,任何人都可以解释为什么我们需要将数据从游标传输到对象以显示在listview/recyclerview中而不是直接从游标中显示?

例如,在自定义cursorAdapter类中,

Person person = new Person(cursor.getString(cursor.getColumnIndexOrThrow(PERSON_NAME)));
textview.setText = person.getName();
Run Code Online (Sandbox Code Playgroud)

要么

textview.setText = cursor.getString(cursor.getColumnIndexOrThrow(PERSON_NAME));
Run Code Online (Sandbox Code Playgroud)

以上哪种方法比较好?

在过去,我们曾经有listview和gridview,现在看来它们被合并成为recyclerview.那么,我如何实现基于网格的Recyclerview?

sqlite android cursor android-contentprovider android-recyclerview

20
推荐指数
1
解决办法
8943
查看次数

使用 LIMIT 通过 SQLite 进行分页

我正在编写自己的 SQLIteBrowser,并且有最后一个问题,这显然在网络上经常讨论,但似乎没有一个好的通用解决方案。

所以目前我存储用户输入的SQL。每当我需要获取行时,我都会通过在 SQL 末尾添加“Limit n, m”来执行 SQL。

对于我主要使用的普通 SQL,这似乎已经足够了。但是,如果我想在查询中使用 limit 自己,这显然会给出错误,因为生成的 sql 可能如下所示:

 select * from table limit 30 limit 1,100
Run Code Online (Sandbox Code Playgroud)

这显然是错误的。有更好的方法来做到这一点吗?

我的想法是,我可以扫描 SQL 并检查是否已经使用了限制子句,然后忽略它。当然它不是那么简单,因为如果我有这样的sql:

 select * from a where a.b = ( select x from z limit 1)
Run Code Online (Sandbox Code Playgroud)

显然在这种情况下它仍然应该应用我的限制,所以我可以从末尾扫描字符串并查看是否存在限制。我现在的问题是,这有多可行。由于我不知道 SQL 解析器是谁工作的,所以我不确定 LIMIT 是否必须位于 SQL 的末尾,或者末尾是否还可以有其他命令。

我用order byand测试了它,如果不是最后,group by我会得到 SQL 错误,所以我的假设似乎是正确的。limit

sql sqlite limit

2
推荐指数
1
解决办法
1万
查看次数