Tengo una aplicación con pestañas, en la cual una de ellas tiene un ListFragment que se llena con datos JSON de una base de datos de un servidor.
Mi problema es que al no tener conexión de internet el celular, la aplicación sigue intentando recolectar datos y no se detiene. Estoy utilizando AsyncTask para el control de datos.
Tengo entendido que un "hilo" podría ayudar, pero no estoy seguro si en Android serviria. Qué debo utilizar para controlar la recoleccion de datos?
Este es mi código de la pestaña del ListFragment.
Código:
public class Tab1Fragment extends ListFragment { private static String url="http://10.0.2.2/prueba/lista.php"; private static final String TAG="nombre"; private Context context; ArrayList<HashMap<String,String>> jsonlist=new ArrayList<HashMap<String,String>>(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { new GetJSONActivity(Tab1Fragment.this).execute(); return super.onCreateView(inflater, container, savedInstanceState); } private class GetJSONActivity extends AsyncTask<String, Void, String>{ private ProgressDialog progressDialog; protected void onPreExecute(){ progressDialog=ProgressDialog.show(getActivity(), "", "Loading. Please Wait..",true); } public GetJSONActivity(ListFragment activity){ context=activity.getActivity(); } @Override protected String doInBackground(String... arg0) { // TODO Auto-generated method stub JSONParser jParser=new JSONParser(); JSONArray json=jParser.getJSONFromURL(url); for(int i=0;i<json.length(); i++){ try{ JSONObject c=json.getJSONObject(i); String vnombre=c.getString(TAG); HashMap<String, String> map=new HashMap<String, String>(); map.put(TAG, vnombre); jsonlist.add(map); }catch(JSONException e){ e.printStackTrace(); return "Error creando variables"; } } return "Exito"; } protected void onPostExecute(String success){ progressDialog.dismiss(); ListAdapter adapter=new SimpleAdapter(context, jsonlist, R.layout.item, new String[]{ TAG }, new int[]{R.id.nombreitem}); setListAdapter(adapter); } } }