0

我正在开发一个 android 应用程序,在其中我从 SQLite 数据库表中检索一些数据(所有村庄名称)。我通过字符串数组返回了这个。代码是

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 条记录。这两个字符串数组包含 1000 个结果和空值,直到剩下的。您可以通过断点检查。AutoComplete Textview 不支持这种格式。

所以你应该在你的代码中做一些改变

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

然后你可以直接使用 setAdapter 中的村庄作为

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

ArrayAdapter 适配器 = new ArrayAdapter(this,android.R.layout.simple_dropdown_item_1line,newone);

用这个代替;

ArrayAdapter 适配器 = new ArrayAdapter(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 回答