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