1

一部の値が繰り返されるデータベース テーブルの列から AutoCompleteTextView を提案するにはどうすればよいですか?

http://www.outofwhatbox.com/blog/2010/11/android-autocompletetextview-sqlite-and-dependent-fields/

http://www.outofwhatbox.com/blog/2010/11/android-simpler-autocompletetextview-with-simplecursoradapter/

AutoCompleteTextView の使用方法を学習する際に、上記の 2 つのブログ記事に出くわしました。これらは導入には最適ですが、私の問題を完全には解決しません。アプリの AutoCompleteTextView の提案として、データベースの列の個別の値を提供したいと考えています。上記の 2 つの例のコードを実装すると、リストに繰り返し提案が表示されます。返された結果にフィールドが必要なため、クエリでキーワードを使用しようとしてもDISTINCT機能しません。各行には独自のがあるため、繰り返される値は削除されません。CursorAdapter_id_id

値用に別のルックアップ テーブルを作成することを検討しています。これには、データを正規化するだけでなく、エントリに提案する個別の値に簡単にアクセスできるという利点があります。私の AutoCompleteTextViews の 1 つについては、おそらく 4 つまたは 5 つの異なる値しか使用されないため、これはうまくいくと思います。別の例としては、大規模なデータ セットに個別の値がいくつあるかわからないため、うまく機能しない可能性があります。

4

3 に答える 3

2

テーブルがある場合:

CREATE TABLE Foo(_id INTEGER PRIMARY KEY, bar TEXT);

そして、使用できる_id個別ごとに1つだけ選択したい:bar

SELECT _id, bar FROM Foo GROUP BY bar;
于 2012-11-30T22:27:05.730 に答える
2

sqlite selectクエリを実行するときにGROUP BYを使用してみてください...そして列名でグループ化します...つまり

 SELECT keyword FROM mytable GROUP BY keyword
于 2012-11-30T22:27:57.213 に答える
0

これがやり過ぎではないことを願っていますが、サブクエリを試してみませんか?

select _id, bar 
from Foo 
where bar in (
    select distinct bar
    from Foo
);

内側のクエリは「bar」内のすべての個別の値を返し、外側のクエリはこれらすべての値を対応する「_id」と照合します。

于 2012-12-01T00:03:18.960 に答える