我有一个AutoCompleteTextView
用户输入地址的地方。我希望能够在他键入时在下面显示建议。为此,我通过反向地理编码 API 获得了可能的地址列表。然后我想向用户显示这个字符串列表(可能的地址)。就像谷歌地图应用一样。
我TextChangedListener
在AutoCompleteTextView
. 如果执行onTextChanged()
an 事件,AsyncTask
其中可能的地址列表在onPostExecute()
.
autoText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
new GeoTask().execute();
}
});
尝试 1
这是列表:
static List<String> suggestionList = new ArrayList<String>();
这是适配器的代码AutoCompleteTextView
:
autoText.setThreshold(3);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, suggestionList);
autoText.setAdapter(adapter);
adapter.setNotifyOnChange(true);
使用上面的代码没有任何显示。
尝试 2
我还尝试使用数组作为适配器的参数,每次更新地址列表时,我都会将其转换为数组。
static String[] suggestions;
static List<String> suggestionList = new ArrayList<String>();
适配器:
autoText.setThreshold(3);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, suggestionList);
autoText.setAdapter(adapter);
adapter.setNotifyOnChange(true);
异步任务:
protected void onPostExecute(Void aVoid) {
...
suggestions = suggestionList.toArray(new String[suggestionList.size()]);
super.onPostExecute(aVoid);
}
我怎样才能让它工作?有没有办法将适配器与列表一起使用?