I would like to change the text from a TextView when a JSON array is empty.
This is the code where I am getting the JSON array:
private void getEntrenadoresFromDB(int id) {
AsyncTask<Integer, Void, Void> asyncTask = new AsyncTask<Integer, Void, Void>() {
@Override
protected Void doInBackground(Integer... entrenadoresIds) {
Log.d("CEF", "WORKOUT SELECCIONADO: " + workout_seleccionado);
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://....php?id=" + workout_seleccionado)
.build();
try {
okhttp3.Response response = client.newCall(request).execute();
JSONArray array = new JSONArray(response.body().string());
for (int i = 0; i < array.length(); i++) {
int numeroentrenadores = array.length();
Log.d("HOLA PERFIL", "NUMERO ENTRENADORES: " + numeroentrenadores);
Log.d("HOLA PERFIL", "NUMERO ENTRENADORES: " + numeroentrenadores);
JSONObject object = array.getJSONObject(i);
Log.d("HOLA ENTRENADORES", "ENTRENADOR LEIDO: " + object.getString("imagen_art"));
Entrenador entrenador = new Entrenador(object.getInt("id_entrenador"), object.getString("corto"),object.getString("largo"),
object.getInt("sexo"),object.getString("ciudad"), object.getString("imagen_art"),
object.getString("nombre_art"),object.getString("usuario"), object.getInt("workout"), object.getDouble("latitud_entrenador"), object.getDouble("longitud_entrenador"));
entrenadores.add(entrenador);
}
} catch (IOException e) {
e.printStackTrace();
Log.d("HOLA PERFIL", "NUMERO ENTRENADORES: " +"no hay entrenadores io exception");
} catch (JSONException e) {
e.printStackTrace();
Log.d("HOLA PERFIL", "NUMERO ENTRENADORES: " +"no hay entrenadores json exception");
txtNo.setText("h");
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
adapter.notifyDataSetChanged();
}
};
asyncTask.execute(id);
}
As you may see, I have tried putting it under catch (JSONException e), but there is a warning: setText must be called from the UI thread... What should I do?