我有一個AutocompleteTextView與ArrayAdapter一起工作。當文本更改時,適配器將從web服務更新。這個更新是在AsyncTask中完成的,這是一個很好的做法。這或多或少地起作用,因爲每次按下按鍵後的建議都基於按下的上一個按鍵中檢索的字符串。 這個頁面有幾個相關的問題,但沒有一個答案適用於我。無論如何,我有一個解決方案,但效率低下,我不知道爲什麼「官方解決方案」失敗。ArrayAdapter從AutoCompleteTextAdapter中的Webservice晚到更新
我認爲關鍵在於在後臺調用ArrayAdapter的函數。這一點,我在異步調用做web服務:
private class DoAutoCompleteSearch extends AsyncTask<String, Void, Map<String, String>> {
@Override
protected Map<String, String> doInBackground(String... params) {
// Ask the webservice for data
Map<String, String> autoComplete = GetResource.dataList(params[0]);
return autoComplete;
}
@Override
protected void onPostExecute(Map<String, String> result) {
//mAutoCompleteAdapter.clear(); * This should work but does not *
/* If it is set a new adapter in the AutoCompleteTextView, the whole thing works properly */
mAutoCompleteAdapter = new ArrayAdapter<String>(mAutoCompleteAdapter.getContext(), android.R.layout.simple_dropdown_item_1line);
mACTV.setAdapter(mAutoCompleteAdapter);
for (Map.Entry<String, String> entry : result.entrySet()) {
mAutoCompleteAdapter.add(entry.getKey());
}
}
}
我試圖與mAutoCompleteAdapter.clear(),並設置mAutoCompleteAdapter.notifyDataSetChanged()無處不在,但它是無用的。