Actualmente ya lo hace, con un Asynctask, sin embargo, como deseo mantener las llamadas "genericas", he decidido que la carga final a los views se haga desde el activity, para ello documentandome vi que deberia usar una interface para hacer el execute, luego con un "listerner" creado desde un "interface" implementar el metodo final en el activity para q se ejecutara desde el onPostExecute del Asynctask.
El Asynctask ya funca y recupera bien la info, incluso me permite ejecutar el metodo implementado en el activity, sin embargo, el resultado final del webservice que es un array, debo cargarlo al ARRAY ADAPTER que alimeenta a la lista.
El PROBLEMA es que, aunque el metodo se reconoce ya dentro del activity, el ADAPTER NO SE CARGA, manda error como si el adapter no existiera o no se reconociera:
CODIGO DEL ACTIVITY:
Código:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_imagenes_prueba1); lvPhotos = (ListView) findViewById(R.id.lvFotos); // Creamos un Adapter estándar de Android. lvAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>()); lvAdapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>()); // Asignamos el Adapter al ListView. lvPhotos.setAdapter(lvAdapter); // Para ver cada foto individual // Agrega el listener para el listView de Categorias lvPhotos.setOnItemClickListener(this); // Actualizamos los datos, pasamos el Context para poder mostrar un // ProgressDialog durante la carga de datos y el Adapter para // actualizarlo. String enlace = "http://www.foreverjunior.com/wslive/Service1.svc/123"; ((JSONApplication) getApplication()).getData(this, lvAdapter, enlace); } // @Override public void tareaCompletada (ArrayList<String> arrayList) { // TODO Auto-generated method stub /* Read the response */ //String Response = arrayList.get(0); Log.e("activity ImagenesPrueba1", "******* OK OK============en tareaCompletada" ); Log.e("activity ImagenesPrueba1", " intentamos meter 1 elemento al adapter" ); Log.e("activity ImagenesPrueba1", " arrayList.size es "+arrayList.size() ); // OK ESTA RECOGIENDO OK LOS VALORES // Asignamos el Adapter al ListView. for (String tmp : arrayList){ Log.e("activity ImagenesPrueba1", " OTRA VEZ TMP:" + tmp ); //------------------------------------- // AQUI MANDA UN ERROR!!!!! (no reconoce el lvAdapter lvAdapter2.add(tmp); } Log.e("activity ImagenesPrueba1", " PASO 0002"); // lvPhotos.setAdapter(lvAdapter); //lvAdapter.add("Hola999"); }
El error indica:
07-11 14:54:42.315: W/System.err(9878): java.lang.NullPointerException
07-11 14:54:42.315: W/System.err(9878): at com.example.pruebaandroid1.ActivityImagenesPrueba1 .tareaCompletada(ActivityImagenesPrueba1.java:82)
El adapter desde dentro del asynctask si se carga ok.
EL METODO tareaCompletada RECIBE BIEN EL ARRAYLIST x que con un bucle veo qiue si trae valores.