0

私は、SQLiteデータベーステーブルからいくつかのデータ(すべての村の村の名前)を取得するAndroidアプリケーションを開発しています。文字列配列を介してこれを返しました。コードは

public String[] getAllVillage()
 {
     String[] villagelist=new String[2000];
     int i=0;
     Cursor c=sqLiteDatabase.rawQuery("SELECT * FROM " + MYDATABASE_TABLE2 ,null);
     if (c.moveToFirst())
     {
         do
         {
             villagelist[i]=c.getString(1);
             i++;
         }while(c.moveToNext());
     }
     c.close();
    return villagelist;
 }

そして、私のAndroidアプリケーションでは、次のようにこの配列をAutoCompleteTextviewに渡しました。

private SQLiteAdapterv vadapter;
String[] village=new String[2000];
String newone[] = new String[2000];
village=vadapter.getAllVillage();
 for(int h=0;h<2000;h++)
 {
newone[h]=village[h];
 }
   ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,newone);
   final AutoCompleteTextView acTextView = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);

   acTextView.setThreshold(0);
   acTextView.setAdapter(adapter);
   acTextView.addTextChangedListener(this);

ただし、コードには効果がありません。つまり、AutocompleteTextviewをクリックしても、村の名前は表示されません。私の方法は正しかったですか?そうでない場合は、これを行うのを手伝ってください

4

3 に答える 3

2

まず、コードの問題は

String[] village=new String[2000];// assigning large size
String newone[] = new String[2000];

その理由は、データベースに1000レコードしか存在しない場合を想定しています。これらの2つの文字列配列には、残りまでの1000個の結果値とnull値が含まれています。ブレークポイントで確認できます。AutoCompleteTextviewはそのような形式をサポートしていません。

したがって、コードに次のように変更を加える必要があります。

int count;
count=vadapter.getCount();
String[] village=new String[count];
village=vadapter.getAllVillage();

次に、setAdapterのvillageを次のように直接使用できます。

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,village);
于 2013-02-06T11:49:18.603 に答える
1

ArrayAdapterアダプター=newArrayAdapter(this、android.R.layout.simple_dropdown_item_1line、newone);

これに置き換えます。

ArrayAdapterアダプター=newArrayAdapter(this、android.R.layout.simple_dropdown_item_1line、village);

于 2013-01-31T13:01:48.213 に答える
0

これを試して :

acTextView.setThreshold(1);

acTextView.addTextChangedListener(this);

acTextView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, newone));
于 2013-01-31T13:02:40.277 に答える