el uso de AsyncTask para mostrar los datos en la vista de lista

Me necesito un poco de ayuda. Necesito usar asynctask para mostrar los datos en la vista de lista. Pero no sé cómo porque soy nuevo en la programación en Android … muchas gracias por cualquier ayuda.

public class Main extends ListActivity {
Button buttonbg;   
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
   setContentView(R.layout.listplaceholder);

    ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();

    JSONObject json = JSONfunctions.getJSONfromURL("http://10.10.10.10/data.php");

    try{

        JSONArray  ip = json.getJSONArray("ip");

        for(int i=0;i<ip.length();i++){                     
            HashMap<String, String> map = new HashMap<String, String>();    
            JSONObject e = ip.getJSONObject(i);

            map.put("id",  String.valueOf(i));
            map.put("data1", e.getString("date"));
            map.put("data2", "Location:" +  e.getString("location") + "   Status:" + e.getString("status"));
            mylist.add(map);            
        }       
    }catch(JSONException e)        {
         Log.e("log_tag", "Error parsing data "+e.toString());
    }

    ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.main, 
                    new String[] { "data1", "data2" }, 
                    new int[] { R.id.item_title, R.id.item_subtitle });

    setListAdapter(adapter);

    final ListView lv = getListView();
    lv.setTextFilterEnabled(true);

}}

InformationsquelleAutor Nenad | 2012-04-26

2 Kommentare

  1. 8

    Probar este

    new MyAsyncTask.execute("http://10.10.10.10/data.php");

    Declarar la tarea como

    class MyAsyncTask extends AsyncTask<String, Integer, ArrayList<HashMap<String, String>> > {
    
        ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
    
        @Override
        protected ArrayList<HashMap<String, String>> doInBackground(String... params) {
    
            JSONObject json = JSONfunctions.getJSONfromURL(params[0]);
    
            try {
                JSONArray  ip = json.getJSONArray("ip");
    
                for (int i=0;i<ip.length();i++) {                     
                    HashMap<String, String> map = new HashMap<String, String>();    
                    JSONObject e = ip.getJSONObject(i);
    
                    map.put("id",  String.valueOf(i));
                    map.put("data1", e.getString("date"));
                    map.put("data2", "Location:" +  e.getString("location") + "   Status:" + e.getString("status"));
                    mylist.add(map);            
                } 
                return mylist
            } catch (JSONException e) {
                Log.e("log_tag", "Error parsing data "+e.toString());
            }
            return null;
        }
    
        @Override
        protected void onPostExecute(ArrayList<HashMap<String, String>> result) {
            ListAdapter adapter = new SimpleAdapter(YourActivity.this, result , R.layout.main, 
                    new String[] { "data1", "data2" }, 
                    new int[] { R.id.item_title, R.id.item_subtitle });
            YourActivity.this.setListAdapter(adapter); //If Activity extends ListActivity
            final ListView lv = getListView();
            lv.setTextFilterEnabled(true);
    
        }

    Espero que ayude.

    • no. muchos errores de sintaxis 🙁
    • Ok he hecho algunas modificaciones. Intente de nuevo. Se debe trabajar.
    • puede que me explique lo que es YourActivity.este ? gracias
    • YourActivity significa su nombre de la actividad. En su caso su Principal ..:)
    • Gracias! esta solucionado mi problema.
    • Mi placer ! Marca como ans, podría ayudar a los demás.

  2. 2

    No descarga los datos en su onCreate() – si se toma demasiado tiempo, a continuación, obtendrá ANR excepción (Actividad No Responde). Usted debe utilizar AsyncTask como en tu pregunta. Para AsyncTask tienes muy buen ejemplo en android sitio:

    http://developer.android.com/reference/android/os/AsyncTask.html

    usted debe poner JSONfunctions.getJSONfromURL() dentro de doInBackground()

    y todos whats a continuación en onPostExecute()

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea