微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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的这个问题的答案,因为它可能是一个更优雅的解决这个问题.

感谢大家!

原文地址:https://www.jb51.cc/android/310936.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐