J'ai un AutocompleteTextView qui fonctionne avec un ArrayAdapter. L'adaptateur est mis à jour à partir d'un service Web lorsque le texte change. Cette mise à jour est faite dans un AsyncTask, ce qui est censé être une bonne pratique. Cela fonctionne plus ou moins, car les suggestions après chaque touche sont basées sur les chaînes récupérées dans la touche précédente. Il y a quelques problèmes liés à cette page, mais aucune des réponses ne fonctionne pour moi. De toute façon, j'avais une solution, mais elle est inefficace et je ne sais pas pourquoi la "solution officielle" échoue.ArrayAdapter est mis à jour en fin de Webservice dans AutoCompleteTextAdapter
Je pense que la clé est dans la fonction qui utilise de ArrayAdapter en arrière-plan. Il en ce que je fais dans l'appel asynchrone aux webservices:
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());
}
}
}
J'ai essayé avec mAutoCompleteAdapter.clear() et la mise en mAutoCompleteAdapter.notifyDataSetChanged() partout, mais il est inutile.