i'm trying populate listview following tutorial here http://www.learn2crack.com/2013/11/listview-from-json-example.html, data not showing when press getdata button. seems fail pass array php android app using json, need help
edit : able pass value php, unable set value in listview, when run activity, logcat output text :
06-04 09:10:23.844: d/json parser(4058): {"pendaftar":[[{"no_pendaftaran":"ad-15-001","nama_lengkap":"wanda"},{"no_pendaftaran":"ad-15-002","nama_lengkap":"skndje"},{"no_pendaftaran":"ad-15-003","nama_lengkap":"aksn"}]]}
and edit php code:
//fetching rows query $row = $stmt->fetchall(); $response["pendaftar"][]= $row; echo json_encode($response);
so here's activity display listview :
package subactivity; import java.util.arraylist; import java.util.hashmap; import org.json.jsonarray; import org.json.jsonexception; import org.json.jsonobject; import id.wanda.smkkkristenimmanuelii.jsonparser; import id.wanda.smkkkristenimmanuelii.r; import android.app.activity; import android.app.progressdialog; import android.os.asynctask; import android.os.bundle; import android.view.view; import android.widget.adapterview; import android.widget.button; import android.widget.listadapter; import android.widget.listview; import android.widget.simpleadapter; import android.widget.textview; import android.widget.toast; public class seleksinilai extends activity { listview list; textview nopendaftaran; textview namapendaftar; button btngetdata; arraylist<hashmap<string, string>> calonsiswa = new arraylist<hashmap<string, string>>(); jsonparser jparser = new jsonparser(); //url json array private static string url = "http://192.168.1.110/smkkimmanuel2/seleksinilai.php"; //json node names private static final string tag_os = "pendaftar"; private static final string tag_no_pendaftaran = "no_pendaftaran"; private static final string tag_nama_lengkap = "nama_lengkap"; jsonarray pendaftar = null; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_seleksi_nilai); calonsiswa = new arraylist<hashmap<string, string>>(); btngetdata = (button)findviewbyid(r.id.getdata); btngetdata.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { new getdata().execute(); } }); } private class getdata extends asynctask<string, string, jsonobject> { private progressdialog pdialog; @override protected void onpreexecute() { super.onpreexecute(); nopendaftaran = (textview)findviewbyid(r.id.nopendaftar); namapendaftar = (textview)findviewbyid(r.id.namapendaftar); pdialog = new progressdialog(seleksinilai.this); pdialog.setmessage("getting data ..."); pdialog.setindeterminate(false); pdialog.setcancelable(true); pdialog.show(); } @override protected jsonobject doinbackground(string... args) { // getting json url jsonobject json = jparser.getjsonfromurl(url); return json; } @override protected void onpostexecute(jsonobject json) { pdialog.dismiss(); try { // getting json array url pendaftar = json.getjsonarray(tag_os); for(int = 0; < pendaftar.length(); i++){ jsonobject c = pendaftar.getjsonobject(i); // storing json item in variable string ver = c.getstring(tag_no_pendaftaran); string name = c.getstring(tag_nama_lengkap); // adding value hashmap key => value hashmap<string, string> map = new hashmap<string, string>(); map.put(tag_no_pendaftaran, ver); map.put(tag_nama_lengkap, name); calonsiswa.add(map); list=(listview)findviewbyid(r.id.list); listadapter adapter = new simpleadapter(seleksinilai.this, calonsiswa, r.layout.single_item_seleksi_nilai, new string[] { tag_no_pendaftaran,tag_nama_lengkap }, new int[] { r.id.nopendaftar,r.id.namapendaftar}); list.setadapter(adapter); list.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { // todo auto-generated method stub toast.maketext(seleksinilai.this, "you clicked @ "+calonsiswa.get(+position).get("name"), toast.length_short).show(); } }); } } catch (jsonexception e) { e.printstacktrace(); } } } }
and here's php code fetch data :
<?php //load , connect mysql database stuff require("config.php"); //gets user's info based off of username. $query = "select no_pendaftaran,nama_lengkap pendaftaran"; try { $stmt = $db->prepare($query); $stmt->execute(); } catch (pdoexception $ex) { // testing, use die , message. //die("failed run query: " . $ex->getmessage()); //or use use 1 product json data: $response["success"] = 0; $response["message"] = "database error1. please try again!"; die(json_encode($response)); } //fetching rows query $row = $stmt->fetchall(); $arr['pendaftar'][]= $row; $json = json_encode($arr); $json_encoded_string = json_encode($arr); $json_encoded_string = str_replace("\\/", '/', $json_encoded_string); echo $json_encoded_string; ?>
php output :
{"pendaftar":[[{"no_pendaftaran":"ad-15-001","nama_lengkap":"wanda"}]]}
i able show array on listview, problem remain in php code here:
//fetching rows query $row = $stmt->fetchall(); //here, problem bracket [] $response["pendaftar"][]= $row; //here echo json_encode($response);
all need remove bracket, figure out seeing else array output, php output this, there double brackets [] :
{"pendaftar":[[{"no_pendaftaran":"ad-15-001","nama_lengkap":"wanda"},{"no_pendaftaran":"ad-15-002","nama_lengkap":"skndje"},{"no_pendaftaran":"ad-15-003","nama_lengkap":"aksn"}]]}
while other got 1 bracket, i'm not sure reason, problem solved, myself.
Comments
Post a Comment