Android的SimpleCursorAdapter,使用DISTINCT查询

这是一个有趣的问题,我很震惊,没有在互联网上更频繁地被问到.一旦您获得ContentProvider并运行并学习如何使用它,Android的CursorAdapters就非常有用,但是由于需要将_id字段作为查询的一部分(无错误的抛出)将会受到限制.这就是为什么:

我的具体问题是我有两个旋转器:一个微调器应该包含来自数据库的唯一的“类别”名称,另一个应该从所选的“类别”(类别为列名称,在这里)填充所有数据库条目.这似乎是一个非常简单的设置,许多程序可能使用,不?试图实现第一个微调器是我遇到问题的地方.

这是我想要的第一个微调器的查询

SELECT disTINCT category FROM table;

使此查询在CursorAdapter上引发错误,因为_id列是查询的一部分.将_id列添加到投影自然会返回表的每一行,因为您现在也要求不同的id,并且每个id都是不同的(根据定义).显然我宁愿看到每个类别名称只有一个条目.

我已经实现了一个工作,这是为了简单地做上面的查询,然后将结果复制到一个ArrayAdapter.我的这个帖子的原因是看看是否有一个更优雅的解决方案,这个奇怪的小问题,并开始讨论我可以做得更好.非常受欢迎的其他实施建议,如使用不同类型的控件或适配器.

解决方法

这是我最后得到的查询
SELECT _id,category FROM table_name GROUP BY category;

我在sqliteDatabase对象上使用了rawQuery()函数来执行此操作. “GROUP BY”是获得正确结果的关键,所以感谢用户Sagar指出我正确的方向.

考虑用户Al Sutton的这个问题的答案,因为它可能是一个更优雅的解决这个问题.

感谢大家!

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...