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 Comentarios

  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()

Dejar respuesta

Please enter your comment!
Please enter your name here