Fragmento implementando AsyncTask y Listview en android

Aquí está mi código Java

pero no funciona no consigo mi error. Snpashot

package info.androidhive.slidingmenu; import java.util.ArrayList; import java.util.HashMap; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Fragment; import android.app.ProgressDialog; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; public class CommunityFragment extends Fragment { public CommunityFragment(){} // Declare Variables JSONObject jsonobject; JSONArray jsonarray; ListView listview; ListViewAdapter adapter; ProgressDialog mProgressDialog; ArrayList<HashMap<String, String>> arraylist; static String RANK = "rank"; static String COUNTRY = "country"; static String POPULATION = "population"; static String FLAG = "flag"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_community, container, false); new DownloadJSON().execute(); return rootView; } // DownloadJSON AsyncTask private class DownloadJSON extends AsyncTask<Void, Void, Void> { @Override protected void onPreExecute() { super.onPreExecute(); // Create a progressdialog mProgressDialog = new ProgressDialog(CommunityFragment.this); // Set progressdialog title mProgressDialog.setTitle("Student Government App"); // Set progressdialog message mProgressDialog.setMessage("Loading..."); mProgressDialog.setIndeterminate(false); // Show progressdialog mProgressDialog.show(); } @Override protected Void doInBackground(Void... params) { // Create an array arraylist = new ArrayList<HashMap<String, String>>(); // Retrieve JSON Objects from the given URL address jsonobject = JSONFunctions .getJSONfromURL("http://app-dlslsg.azurewebsites.net/json/postList.php"); try { // Locate the array name in JSON jsonarray = jsonobject.getJSONArray("post"); for (int i = 0; i < jsonarray.length(); i++) { HashMap<String, String> map = new HashMap<String, String>(); jsonobject = jsonarray.getJSONObject(i); // Retrive JSON Objects map.put("rank", jsonobject.getString("id")); map.put("country", jsonobject.getString("body")); map.put("population", jsonobject.getString("stamp")); map.put("flag", jsonobject.getString("image")); // Set the JSON Objects into the array arraylist.add(map); //Log.i("body",COUNTRY); } } catch (JSONException e) { Log.e("Error", e.getMessage()); e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void args) { // Locate the listview in listview_main.xml listview = (ListView) findViewById(R.id.listview); // Pass the results into ListViewAdapter.java adapter = new ListViewAdapter(CommunityFragment.this, arraylist); // Set the adapter to the ListView listview.setAdapter(adapter); // Close the progressdialog mProgressDialog.dismiss(); } } } 

He intentado buscar en toda la red hoy, pero no tengo la oportunidad de ver los problemas relacionados. ¿Alguien me ayudará a entender esto? ¡contestaré cuanto antes esas gracias de las respuestas gracias por la ayuda!

2 Solutions collect form web for “Fragmento implementando AsyncTask y Listview en android”

Un fragmento no es un Contexto. Tienes que usar getActivity() donde estás usando CommunityFragment.this .

reemplazar

 mProgressDialog = new ProgressDialog(CommunityFragment.this); 

con

 mProgressDialog = new ProgressDialog(getActivity()); 

y

 adapter = new ListViewAdapter(CommunityFragment.this, arraylist); 

con

 adapter = new ListViewAdapter(getActivity(), arraylist); 

Oke, por lo que hay varios errores:

  1. El constructor ListViewAdapter requiere una Actividad (o Contexto), pero está pasando un Fragmento. Puede utilizar Fragment.getActivity() para obtener la Actividad del Fragmento, pero sólo si se adjunta.
  2. El constructor ProgressDialog requiere un objeto Context, pero de nuevo pasa un fragmento. Un Fragmento no extiende el Contexto, pero sí la clase Actividad. Una vez más, puede pasar Fragment.getActivity() .
  3. Por último, intenta llamar a findViewById() formulario dentro de AsyncTask. Este es un método que sólo está disponible dentro de la Actividad, así que nuevamente es necesario obtener la Actividad y llamar al método a través del objeto Actividad.
  • Cómo hacer una lista <enum> parcelable?
  • Actualizar fragmento actual (datos ListView) que permanece en la misma actividad
  • Agregar vistas de forma programática en un diseño (lineal) (que está dentro de un ScrollView)
  • ¿Dónde puedo obtener una lista de nombres Build.MODEL para todos los dispositivos Android?
  • Mejores prácticas de administración de fragmentos para varios ListFragments
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.