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

Android 返回字符串数组并在AutoCompleteTextview上使用它,android,sqlite,android-sqlite,autocompletetextview,Android,Sqlite,Android Sqlite,Autocompletetextview,我正在开发一个android应用程序,其中我从SQLite数据库表中检索一些数据(所有的村庄名称)。我通过字符串数组返回了这个。代码是 public String[] getAllVillage() { String[] villagelist=new String[2000]; int i=0; Cursor c=sqLiteDatabase.rawQuery("SELECT * FROM " + MYDATABASE_TABLE2 ,null); i

我正在开发一个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);
private-SQLiteAdapterv-vadapter;
字符串[]村庄=新字符串[2000];
字符串newone[]=新字符串[2000];
village=vadapter.getAllVillage();
对于(int h=0;h
ArrayAdapter适配器=新
ArrayAdapter(这是android.R.layout.simple下拉菜单项行,newone)

换成这个,

ArrayAdapter适配器=新 ArrayAdapter(这是android.R.layout.simple下拉菜单项行,村庄)

ArrayAdapter适配器=新 ArrayAdapter(这是android.R.layout.simple下拉菜单项行,newone)

换成这个,

ArrayAdapter适配器=新 ArrayAdapter(这是android.R.layout.simple下拉菜单项行,村庄)

试试这个:

acTextView.setThreshold(1);

acTextView.addTextChangedListener(this);

acTextView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, newone));
acTextView.setThreshold(1);
acTextView.addTextChangedListener(此);
setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_下拉列表,项目线,新的));
试试这个:

acTextView.setThreshold(1);

acTextView.addTextChangedListener(this);

acTextView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, newone));
acTextView.setThreshold(1);
acTextView.addTextChangedListener(此);
setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_下拉列表,项目线,新的));

首先,代码中的问题是

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中使用village作为

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,village);
ArrayAdapter adapter=新的ArrayAdapter(这是android.R.layout.simple\u下拉列表\u item\u 1line,村庄);

首先,代码中的问题是

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中使用village作为

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,village);
ArrayAdapter adapter=新的ArrayAdapter(这是android.R.layout.simple\u下拉列表\u item\u 1line,村庄);

你设置了断点并查看了你的代码吗?你知道你的查询是否填满了
villagelist
?不,我没有检查断点。我的过程正确吗?我的意思是返回字符串数组并实现itcheck out。它们似乎在做你想做的事情。但我会先设置断点,以确保你e首先获取您的数据。我已检查。查询中没有问题。village和newone都包含结果。您是否设置了断点并查看了代码?您是否知道您的查询是否填充了villagelist
?不,我没有检查断点。我的过程是否正确?我的意思是返回字符串数组并实现itcheck out。它们似乎在做你想做的事。但我会首先放置断点以确保你首先获取数据。我已经检查过了。查询中没有问题。village和newone都包含结果。你是否突破了它?village或
newone
中是否有任何元素?如果它们包含你的村庄,那么你知道是什么sue在你的代码中,如果没有,那么你需要修复你的查询。这一点很重要(int h=0;您好,我已经检查过了。查询中没有问题。您是否可以突破它?在
village
newone
中是否有任何元素?如果它们包含您的村庄,则您知道问题在您的代码中,如果没有,则您需要修复您的查询。这一点很重要,因为(int h=0;您好,我已经检查过了。查询中没有问题。)