android - AsyncTas Implementation ListView -
how use asynctask show listview json how put
onpreexecute()
onpostexecute()
doinbackground()
onprogressupdate()
mainactivity.java
list = (listview) activity.findviewbyid(r.id.listview1); arraylist<hashmap<string, string>> followinglist = new arraylist<hashmap<string, string>>(); // creating json parser instance jsonparser jparser = new jsonparser(); // getting json string url jsonobject json = jparser.getjsonfromurl(url); try { // getting array of following following = json.getjsonarray(key_following); // looping through following for(int = 0; < following.length(); i++){ jsonobject c = following.getjsonobject(i); // storing each json item in variable string nama = c.getstring(key_nama); string instansi = c.getstring(key_instansi); string status = c.getstring(key_status); // creating new hashmap hashmap<string, string> map = new hashmap<string, string>(); // adding each child node hashmap key => value map.put(key_nama, nama); map.put(key_instansi, instansi); map.put(key_status, status); // adding hashlist arraylist followinglist.add(map); } } catch (jsonexception e) { e.printstacktrace(); } // getting adapter passing xml data arraylist adapter1=new lazyadapter(this, followinglist); list.setadapter(adapter1);
how implementation asycntask show list view?
dashboardtask
package net.drieanto.lagidimana; import net.drieanto.lagidimana.library.databasehandler; import net.drieanto.lagidimana.library.jsonparser; import net.drieanto.lagidimana.library.userfunctions; import org.json.jsonarray; import org.json.jsonexception; import org.json.jsonobject; import android.app.progressdialog; import android.content.context; import android.content.intent; import android.os.asynctask; import android.util.log; import android.widget.listview; import android.widget.toast; import java.util.arraylist; import java.util.hashmap; public class dashboardtask extends asynctask<string, void, integer> { private progressdialog progressdialog; private dashboardactivity activity; listview list1; lazyadapter adapter1; private listview list; // static variables static final string url = "http://git.drieanto.net/lagidimanaapi/index.php/user/get_following/xx3"; // json node keys private int responsecode = 0; static final string key_following = "following"; static final string key_nama = "nama"; // parent node static final string key_instansi = "instansi"; static final string key_status = "status"; private static string key_success = "success"; private static string key_error = "error"; // following jsonarray jsonarray following = null; public dashboardtask(dashboardactivity activity, progressdialog progressdialog) { this.activity = activity; this.progressdialog = progressdialog; } @override protected void onpreexecute() { progressdialog.show(); } @override protected integer doinbackground(string... arg0) { // check login response // creating json parser instance jsonparser jparser = new jsonparser(); // getting json string url jsonobject json = jparser.getjsonfromurl(url); try { if (json.getstring(key_success) != null) { string res = json.getstring(key_success); if (integer.parseint(res) == 1) { responsecode = 1; } else { responsecode = 0; // error in login } } } catch (nullpointerexception e) { e.printstacktrace(); } catch (jsonexception e) { e.printstacktrace(); } return responsecode; } @override protected void onpostexecute(integer responsecode) { if (responsecode == 1) { progressdialog.dismiss(); arraylist<hashmap<string, string>> followinglist = new arraylist<hashmap<string, string>>(); // creating json parser instance jsonparser jparser = new jsonparser(); // getting json string url jsonobject json = jparser.getjsonfromurl(url); try { // getting array of following following = json.getjsonarray(key_following); // looping through following (int = 0; < following.length(); i++) { jsonobject c = following.getjsonobject(i); // storing each json item in variable string nama = c.getstring(key_nama); string instansi = c.getstring(key_instansi); string status = c.getstring(key_status); // creating new hashmap hashmap<string, string> map = new hashmap<string, string>(); // adding each child node hashmap key => value map.put(key_nama, nama); map.put(key_instansi, instansi); map.put(key_status, status); // adding hashlist arraylist followinglist.add(map); } } catch (jsonexception e) { e.printstacktrace(); } // getting adapter passing xml data arraylist adapter1 = new lazyadapter(activity, followinglist); list.setadapter(adapter1); } else { progressdialog.dismiss(); activity.showdashboarderror(responsecode); } } }
but contain error whats wrong?
you can use following
progressdialog pd; lazyadapter adapter1; listview list; string url; hashmap<string, string> map = new hashmap<string, string>(); arraylist<hashmap<string, string>> followinglist = new arraylist<hashmap<string, string>>();
in activity oncreate()
setcontentview(r.layout.activity_main); list = (listview)findviewbyid(r.id.listview1); pd = new progressdialog(activityname.this); pd.settitle("processing..."); url ="your url"; new thetask().execute();
define asynctask inner class in activity class
class extends asynctask<void,void,void> { @override protected void onpreexecute() { super.onpreexecute(); pd.show(); } @override protected void doinbackground(void... params) { // creating json parser instance jsonparser jparser = new jsonparser(); // getting json string url jsonobject json = jparser.getjsonfromurl(url); try { // getting array of following following = json.getjsonarray(key_following); // looping through following for(int = 0; < following.length(); i++){ jsonobject c = following.getjsonobject(i); // storing each json item in variable string nama = c.getstring(key_nama); string instansi = c.getstring(key_instansi); string status = c.getstring(key_status) // adding each child node hashmap key => value map.put(key_nama, nama); map.put(key_instansi, instansi); map.put(key_status, status); // adding hashlist arraylist followinglist.add(map); } } catch (jsonexception e) { e.printstacktrace(); } return null; } @override protected void onpostexecute(void result) { super.onpostexecute(result); pd.dismiss(); adapter1=new lazyadapter(activityname.this, followinglist); list.setadapter(adapter1); } }
exaplanation
asynctask invoked on ui thread.
onpreexecute() invoked on ui thread. display progress dialog
doinbackground() invoked on background thread. operation. not update ui here
onpostexecute() invoked on ui thread. dismiss dialog , update ui here.
for more info check doc
http://developer.android.com/reference/android/os/asynctask.html
Comments
Post a Comment