20 comentarios el “Cargar ListView con AsyncTask en Android

  1. hola buen post, no podrias subur el codigo del proyecto, estoy haciendo algo similar con Asynctask y me gustaria poder probarlo

  2. no se si puedas ayudarme en mi aplicacion qe es la siguiente
    estoy utilizando un AutoCompleteTextView al cual le quiero asignar una lista de palabras (como tu lo haces al listView). para que cuando este escribiendo me aparescan las palabras qe coincidan con el texto escrito.,
    la lista que quiero asignar al AutoCompleteTextView la obtengo mediante un web service al cual le mando como parametro el texto qe estoy escribiendo para que me regrese la lista con los 10 primeros nombres que concidan.
    el problema es que lo quiero hacer mediante AsyncTask para que lalista se actualice mientras se esta escribiendo ..
    el web service ya lo tengo y si funciona
    no se si puedas ayudarme o conoscas un foro en el qe me pueda guiar sobre este tema

    • Buenos días Beto, antes de nada he estado buscando, y he encontrado un post en stackoverflow.com , en el que justo una persona tiene tu mismo caso, y al final lo soluciona:

      http://stackoverflow.com/questions/10786702/autocompletetextview-with-async-suggestions-loading-doesnt-show-dropdown

      Al parecer, lo que hace es agregar un textChangeListener, en el cual ejecuta la AsyncTask, que va obteniendo los datos y los va cargando en el ArrayList en su caso.

      Una vez ya el ArrayList ya está cargado con algo se crea el adapter, y entonces se establece. Por otro lado, una vez que ya el adapter tiene datos, y se han cargado mas datos de los que había, para “recargar” el adapter usa el método notifyDataSetChanged().

      Lo único que creo que deberías hacer es controlar cuando se crea el adapter, es decir, controlando si existe el adapter, y si no existe (sería la primera vez que recibes datos), lo creas y lo estableces, y si ya existe (cuando has obtenido mas datos), actualizarlo.

      Justo hoy tenía pendiente hacer un Tutorial básico sobre AutoCompleteTextVIew, aunque no cubría estos aspectos, pero si lo del post de stackoverflow.com te ha servido de ayuda, comunícamelo y se puede hacer una entrada que en este caso se llame “Cargar AutoCompleteTextView con AsyncTask”.

      Saludos Beto!, espero que te haya sido de ayuda!!!

      PD: Para aplicar el Listener al AutoCompleteTextView:

      txtTexto.addTextChangedListener(new TextWatcher(){
      
      			@Override
      			public void afterTextChanged(Editable arg0) {
      				// TODO Auto-generated method stub
      				
      			}
      
      			@Override
      			public void beforeTextChanged(CharSequence arg0, int arg1,
      					int arg2, int arg3) {
      				// TODO Auto-generated method stub
      				
      			}
      
      			@Override
      			public void onTextChanged(CharSequence arg0, int arg1, int arg2,
      					int arg3) {
      				// TODO Auto-generated method stub
      				
      			}
      			
      		});
      
  3. gracias por la ayuda
    ingrese varios Log.i para poder revisar paso a paso lo que estaba ejecutando y poder detectar donde tenia el error:

    este error me aparece cuando intento crear el ArrayAdapter, todo va bien hasta que llego a esta
    linea:
    adaptador = new ArrayAdapter
    (context, android.R.layout.simple_expandable_list_item_2,productos);

    luego me aparece el siguiente error:
    Error Adapter<– yo le puse este nombre al error
    java.lang.NullPointerException
    at android.widget.ArrayAdapter.init(ArrayAdapter.java:271)
    at android.widget.ArrayAdapter.(ArrayAdapter.java:125)
    at com.example.wsproducto.ProdActivity$CargarProductos.doInBackground(ProdActivity.java:177)

    ya intente temb con simple_dropdown_item_1line y me da el mismo error

    • La excepción del tipo NullPointerException son aquellas que se lanzan cuando se está intentando dar un valor a una variable de referencia que es null, es decir, puede darse el caso de que el array “productos” no haya sido inicializado con la sentencia ” productos = new XXXXXX.”

      Prueba en la AsyncTask que recibe los datos del WebService, añadiendo un bucle for que recorra el array productos y que muestre lo que contiene, en el método onPostExecute().

      Saludos!!

      • Según veo ahora bien en el log, se me ha olvidado decirte, que el error creo que se está dando en el bloque de código que hay en el método doInBackground() del AsyncTask, comprueba las llamadas y a ver si no se ha escapado algo.

        Saludos y suerte con ello Beto 🙂

    • ya resolvi el problema y parece qe ya puedo llenar el AutoCompleteTextView
      pero hare algunas pruebas enviando parametros y comento si funciona

  4. ya me funciona el listado mediante el web service pero ahora cuando estoy escribiendo en el AutoCompleteTextView si pongo un “espacio” me da error y se cierra la aplicacion, ademas cuando selecciono un elemento de la lista me pasa lo mismo

    he probado colocando una sola palabra y si funciona bien solo cuando coloco un espacio la aplicacion se detiene y se cierra

    • Bueno, has avanzado un paso, ahora hay que pulirlo. El tema de que se cierre con un espacio es sin duda problemático, hay que ver exactamente donde se ejecuta el error exactamente. Supongo que cuando vas creando el String para enviar al WebService vas concatenando cada letra que escribes, y cuando pulsas el espacio, algo hace que explote. Intenta poner log donde creas que se está produciendo el error, guiandote por el call stack del LogCat y a ver si con los datos que obtengamos se puede solucionar, ya sea variando un poco el algoritmo o algo.

      PD: Si por un casual tienes prisa o algo, te recomiendo usar StackOverflow, el cuál está lleno de profesionales, y aunque yo te pueda ayudar aquí y no me importe, porque así aprendemos ambos, allí son mucho mas profesionales y quizás logres solucionarlo antes.

      Saludos Berto!!! y ánimo!

      • solucionado lo que se me ocurrio hacer es remplazar los espacion por guio bajo en android y en el ewb service los _ por el espacio ya que por medio de android el web service no me permite enviar espacios no se por qe pasa esto pero asi lo solucione
        gracias por la ayuda

      • Lo importante es que funciona, aunque sigue dandole vueltas al asunto, seguramente en el momento menos pensado se te ocurra otro método jejeje.

        Saludos!

  5. quisiera saber si se puede hacer lo siguiente:
    estoy cargando un listview desde un webservice y me traigo los 10 primeros resultados que conciden con los parametros que envio, pero lo que quiero hacer es que cuando le le scroll al list view y este me muestre el ultimo resultado hacer algo similar a facebook que me empieza a cargar mas resultados, ess decir qe me cargue otros 10 resultadosy me estaria mostrando ahora 20 resultados y asi sucesivamente.
    yo estaria enviando todos los parametros para esto solo que no se si el listview tenga algun evento o pueda hacer esto ya que e buscado y no lo e encontrado

  6. Pingback: AsyncTask en Service en Android « SekthDroid

  7. Hola, estoy haciendo una app que carga los contactos y los compara en un servidor para saber si esta registrado el numero, la cosa es que tarda mucho y lo tengo así como en tu ejemplo, es decir, hace el proceso y después muestra la lista. Me gustaría saber sí es posible que vaya arrojando cada elemento una vez terminado el proceso para ese contacto, para que el usuario no se desespere porque entre mas contactos tenga mas tarda en cargar.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s