单击AutoCompleteTextView后自动提示,无需输入字符,提示信息通过SQLite查询获得
用到的方法
showDropDown
Added in API level 1
void showDropDown ()
Displays the drop down on screen.
该方法属于AutoCompleteTextView,
原理:SQLite保存AutoCompleteTextView输入的历史信息,当单击AutoCompleteTextView时,通过查询SQLite获得历史信息,通过历史信息为AutoCompleteTextView设置Adapter,然后调用showDropDown()。
自动提示代码:
@OnClick(R.id.etRemoteAddress)
@OnTextChanged(R.id.etRemoteAddress)
public void autoCompeteIPAddress(){
IPDataSource ipDataSource = Injection.provideIpAddressData(this);
String [] addresses1 = ipDataSource.getIPAddresses();
if (addresses1 != null) {
ArrayAdapter<String> aa = new ArrayAdapter<>(this,
android.R.layout.simple_dropdown_item_1line, addresses1);
etRemoteAddress.setAdapter(aa);
etRemoteAddress.showDropDown();//调用此方法无需输入字符,AutoCompleteTextView
//直接自动提示
}
}
SQLite查询代码:
public String [] getIPAddresses(){
SQLiteDatabase database = dbHelper.getReadableDatabase();
Cursor cursor = database.rawQuery(rawQueryIP,null);
ArrayList<String> temp = new ArrayList<>();
if (cursor.moveToFirst()) {
do {
int column = cursor.getColumnIndex("ip");
temp.add(cursor.getString(column));
}
while (cursor.moveToNext());
database.close();
}else {
return null;
}
String [] strings = new String[temp.size()];
int i = 0;
for (String s : temp){
strings[i ++] = s;
}
return strings;
}
效果: