如何使用Cursor& amp;来执行自定义排序的SQL数据装载机?

时间:2013-09-03 20:28:04

标签: android sqlite android-contentprovider android-cursor android-loader

我在SQLite数据库中有一些数据,我想在列表视图中提供基本的搜索功能。

以下是我希望能够解决的搜索查询示例:

1)sqlite数据示例:

  
      
  • 广告
  •   
  • BC
  •   
  • CD
  •   
  • d
  •   
  •   
  • EC
  •   

2)输入&想要输出:

  
      
  • a - > [ad,da]
  •   
  • d - > [d,da,ad,cd]
  •   
  • c - > [cd,bc,ec]
  •   

我已经想到了一些事情,但没有什么是正常的:

  1. 全文搜索:我无法修改输入db文件,因此我认为我无法使用它
  2. 一个sqlite查询(name LIKE ?% OR name LIKE %?%):未排序。也许可以想出另一个我不知道的查询
  3. 两个不同的查询(name LIKE ?%然后是name LIKE %?%):但是如何使用内容提供商实现它? CursorWrapper? MergeCursor?自定义装载机?
  4. 我看过很多例子,但对我的自定义搜索没什么用。

    感谢您的帮助。

    修改d上的查询应该提供[d,da,ad,cd]。

    我想要的自定义排序顺序是:LIKE模式%AND然后LIKE%模式%(例如socks应该出现在a pair of socks之前)

2 个答案:

答案 0 :(得分:1)

CursorLoader constructor的最后一个参数是sortOrder - 将name列添加为sortOrder以对结果集进行排序(请注意,将其留空,为{{ 3}}可能导致未按顺序排列。)

答案 1 :(得分:1)

以下是您的要求:

SELECT DISTINCT t.name
FROM (select *, 1 as sec from items WHERE name LIKE 'd%'
union
select *, 2 as sec from items WHERE name LIKE '%d%') as t 
ORDER BY t.sec ASC