如何从数据库表中的列中提供AutoCompleteTextView的建议,这些列可能会重复某些值?
http://www.outofwhatbox.com/blog/2010/11/android-autocompletetextview-sqlite-and-dependent-fields/
在学习如何使用AutoCompleteTextView时,我浏览了以上两篇博客文章。这些非常适合介绍,但不能完全解决我的问题。我想从我的数据库中提供列的不同值作为我的应用程序中的AutoCompleteTextView的建议。当我实现上面两个例子中的代码时,我在列表中得到了重复的建议。尝试在我的查询中使用DISTINCT
关键字不起作用,因为CursorAdapter
在返回的结果中需要_id
字段。由于每一行都有自己的_id
,因此不会消除重复的值。
我正在考虑为值创建一个单独的查找表。这样做的好处是可以规范化我的数据,并且可以轻松访问不同的值以建议条目。对于我的一个AutoCompleteTextViews,我认为这将很好用,因为很可能只会使用4或5个不同的值。另一方面,它可能不会起作用,因为我不确定大数据集中会有多少不同的值。
答案 0 :(得分:2)
如果你有一张桌子:
CREATE TABLE Foo(_id INTEGER PRIMARY KEY, bar TEXT);
并且只想为您可以使用的每个不同的_id
选择一个bar
:
SELECT _id, bar FROM Foo GROUP BY bar;
答案 1 :(得分:2)
在执行sqlite select查询时尝试使用GROUP BY ...并按列名分组... 即。
SELECT keyword FROM mytable GROUP BY keyword
答案 2 :(得分:0)
我希望这不是过度杀戮,但为什么不尝试子查询呢?
select _id, bar
from Foo
where bar in (
select distinct bar
from Foo
);
内部查询将返回“bar”中的所有不同值,然后外部查询将所有这些值与相应的“_id”匹配。