Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


MultiAutoCompleteTextView con cambios de adaptador dinámico

Tengo un widget MultiAutoCompleteTextView en mi Activity, que tiene un ArrayAdapter<String> que se rellena con un resultado de una llamada basada en web. A medida que el usuario escribe caracteres en la vista de texto, la lista de este adaptador debe actualizarse en segundo plano. ¿Cuál es la mejor manera de implementar esto?

Ya he intentado utilizar AsyncTask para descargar la lista de cadenas en segundo plano, pero notifyDataSetChanged() estaba siendo llamado desde el "hilo no originario". Además, esto parece una pequeña rotonda.

La otra opción que encontré es que se puede utilizar Filterable , pero no he encontrado ningún ejemplo simple ( AutoComplete4 parece una exageración) sobre cómo hacer esto. Si no hay ejemplos, ¿alguien puede dar una visión general de los actores que necesitaré – Filtro, filtrado, etc.

También es un buen camino por recorrer?

Gracias,
Rajath

One Solution collect form web for “MultiAutoCompleteTextView con cambios de adaptador dinámico”

Sé que esta pregunta es vieja, pero tuve que hacer la misma cosa y pensé que compartiría la solución con usted o cualquier persona la necesitaría.

En primer lugar, necesitará utilizar un AsyncTask para recuperar sus datos. Dicho esto, nunca dejaría que un AsyncTask manipulara de ninguna manera mi clase de vista. En su lugar, prefiero usar una devolución de llamada pasada junto con los parámetros que necesita en su AsyncTask. Tan pronto como termine el AsyncTask, llamará a su método de devolución de llamada que será responsable de llamar a notifyDataSetChanged() .

He aquí un código:

MyAsyncTask.java

 public class MyAsyncTask extends AsyncTask<Object, Void, Object> { @Override protected String doInBackground(Object... params) { MyController callbackClass = (MyController) params[0]; // Get your other parameters and do your stuff here... // Call the setter with the data you get back and refresh the view // either here or implementing onPostExecute. callbackClass.setMyData(myData); callbackClass.refreshView(); // Return any object if you need. return null; } } 

MyCallbackClass.java

  public MyCallbackClass extends Fragment{ private List<MyDataType> myData; private ArrayAdapter<MyDataType> myAdapter; // Your methods including setters and getters. public void refreshFriendList(){ if(myAdapter == null){ initAutoCompleteView(); } myAdapter.clear(); myAdapter.addAll(myData); myAdapter.notifyDataSetChanged(); } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.