Ver Mensaje Individual
  #1  
Viejo 04/06/16, 12:35:49
Avatar de Joakin60
Joakin60 Joakin60 no está en línea
Miembro del foro
Mensajes: 64
 
Fecha de registro: oct 2015
Mensajes: 64
Tu operador: Movistar
Mencionado: 3 comentarios
Tagged: 0 hilos
Pasar varios String de doInBackground a onPostExecute

Cuando paso un solo String en una clase AsyncTask no tengo problemas:
protected String doInBackground(String... args) {
HashMap<String, String> params = new HashMap<String, String>();
params.put(TAG_PID, pidArte);
JSONObject json = jsonParser.makeHttpRequest(url_arte,
"POST", params);
try {
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
apartados = json.getJSONArray(TAG_APARTADOS);
for (int m = 0; m < apartados.length(); m++) {
JSONObject c = apartados.getJSONObject(m);
// Poner cada json item en una variable
String nombre = c.getString(TAG_NOMBRE);
return nombre;
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String nombre) {
pDialog.dismiss();
delegate.processFinish(nombre);
}
Pero cuando tengo que pasar varios string utilizo el siguiente código que fundamentalmente consiste en poner los string obtenidos de json en un HashMap<String, String> map, pasar el HashMap a onPostExecute y allí recuperar los valores de los string por su clave:
class ArteGeneralDetails extends AsyncTask<String, String, HashMap<String, String>> {

protected void onPreExecute() {

protected HashMap<String, String> doInBackground(String... args) {
HashMap<String, String> map = new HashMap<String, String>();
HashMap<String, String> params = new HashMap<String, String>();
params.put(TAG_PID, pidArte);
JSONObject json = jsonParser.makeHttpRequest(url_arte,
"POST", params);
try {
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
apartados = json.getJSONArray(TAG_APARTADOS);
for (int m = 0; m < apartados.length(); m++) {
JSONObject c = apartados.getJSONObject(m);
// Poner cada json item en una variable
String nombre = c.getString(TAG_NOMBRE_ARTE);
String icono2 = c.getString(TAG_IMAGEN_ARTE);
map.put(TAG_NOMBRE_ARTE, nombre);
map.put(TAG_IMAGEN_ARTE, icono2);
//return map;
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return map;
}
protected void onPostExecute(HashMap<String, String> resultados) {
pDialog.dismiss();
String nombre=resultados.get(TAG_NOMBRE_ARTE);
Toast.makeText(getApplicationContext(), nombre, Toast.LENGTH_LONG).show();
}
En el Toast no sale valor alguno para nombre.
Si alguien puede indicarme algo sobre cómo solucionarlo se lo agradecería.

Última edición por Joakin60 Día 04/06/16 a las 12:54:37
Responder Con Cita