返回字符串数组并在AutoCompleteTextview上使用它

时间:2013-01-31 12:42:05

标签: android sqlite android-sqlite autocompletetextview

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

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时,它不会显示任何别名。我的方法是否正确?如果没有,请帮我这样做

3 个答案:

答案 0 :(得分:2)

首先,代码中的问题是

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

原因是假设您的数据库中只有1000条记录。这两个字符串数组包含1000个结果,其余值为null。您可以通过断点进行检查。自动完成Textview不支持这种格式。

因此,您应该在代码中进行一些更改

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);

答案 1 :(得分:1)

  

ArrayAdapter adapter = new   ArrayAdapter(此,android.R.layout.simple_dropdown_item_1line,newone);

替换为此;

  

ArrayAdapter adapter = new   ArrayAdapter(此,android.R.layout.simple_dropdown_item_1line,村);

答案 2 :(得分:0)

试试这个:

acTextView.setThreshold(1);

acTextView.addTextChangedListener(this);

acTextView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, newone));