简体   繁体   中英

Json data not display in ListView

i was trying to retrieve data from database using json..and i got successful getting the data but it's not display into my listview.

here is the logcat :

04-13 20:01:42.205 5230-5252/? I/Sucess: {"keranjang":[{"id_keranjang":"1","kd_inventaris":"AIKC100-2","judul_buku":"judul_buku"}],"success":1,"message":"Ambil data di tabel keranjang sukses"}
04-13 20:01:42.205 5230-5252/? W/System.err: org.json.JSONException: No value for id_keranjang
04-13 20:01:42.205 5230-5252/? W/System.err:     at org.json.JSONObject.get(JSONObject.java:389)
04-13 20:01:42.205 5230-5252/? W/System.err:     at org.json.JSONObject.getInt(JSONObject.java:478)
04-13 20:01:42.205 5230-5252/? W/System.err:     at com.example.yong.p_akakom.PageFragment2$Ambil_Buku_Keranjang.doInBackground(PageFragment2.java:86)
04-13 20:01:42.205 5230-5252/? W/System.err:     at com.example.yong.p_akakom.PageFragment2$Ambil_Buku_Keranjang.doInBackground(PageFragment2.java:69)
04-13 20:01:42.206 5230-5252/? W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:295)
04-13 20:01:42.206 5230-5252/? W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
04-13 20:01:42.206 5230-5252/? W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
04-13 20:01:42.206 5230-5252/? W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
04-13 20:01:42.206 5230-5252/? W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
04-13 20:01:42.206 5230-5252/? W/System.err:     at java.lang.Thread.run(Thread.java:818)

AsyncTask :

class Ambil_Buku_Keranjang extends AsyncTask<String,String,String> {
        ArrayList<HashMap<String, String>> daftarBukuKeranjang = new ArrayList<HashMap<String, String>>();
        @Override
        protected String doInBackground(String... params) {
            String id = params[0];
            List<NameValuePair> pairs = new ArrayList<NameValuePair>();
            pairs.add(new BasicNameValuePair(TAG_ANGGOTA,id));
            json = jsonParser.makeHttpRequest(URL,"POST",pairs);
            try{
                buku_keranjang = json.getJSONArray("keranjang");
                success = json.getInt(TAG_SUCCESS);
                if(success == 1){
                    Log.d("Success","Sukess tampilkan data buku keranjang");
                    Log.i("Sucess",json.toString());
                    for(int i=0;i<buku_keranjang.length();i++){
                        JSONObject c = new JSONObject();
                        HashMap<String,String> map = new HashMap<String,String>();
                        int id_keranjang = c.getInt(TAG_KERANJANG);
                        String kd_inventaris = c.getString(TAG_INVENTARIS);
                        String judul_buku = c.getString(TAG_JUDUL);

                        map.put(TAG_KERANJANG,String.valueOf(id_keranjang));
                        map.put(TAG_INVENTARIS,kd_inventaris);
                        map.put(TAG_JUDUL,judul_buku);

                        daftarBukuKeranjang.add(map);
                    }
                }

            }catch (JSONException e){
                e.printStackTrace();
            }
            return TAG_MESSAGE;
        }

        @Override
        protected void onPostExecute(String s) {
            if(s != null && success==1){
                adapter = new SimpleAdapter(getActivity().getApplicationContext(),daftarBukuKeranjang,
                        R.layout.list_keranjang,new String[]{TAG_KERANJANG,TAG_INVENTARIS,TAG_JUDUL},
                        new int[]{R.id.id_keranjang,R.id.kd_inventaris_keranjang,R.id.judul_buku_keranjang});
                listPesan.setAdapter(adapter);
            }
        }
    }

And my list layout :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:id="@+id/id_keranjang"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:id="@+id/kd_inventaris_keranjang"
        android:layout_below="@+id/id_keranjang"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:id="@+id/judul_buku_keranjang"
        android:layout_below="@+id/kd_inventaris_keranjang"
        android:layout_alignParentStart="true" />
</RelativeLayout>

pls help....thanks..

JSONObject c = new JSONObject();

This line inside for loop is wrong. You don't create new object when getting object from array. Instead it will be like this

JSONObject c = buku_keranjang.getJSONObject(i);

As your error log key is not exist in json response . For avoid this type error you can use optional string. like below =>

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

// see here 
   int id_keranjang = c.optInt(TAG_KERANJANG);
                            String kd_inventaris = c.optString(TAG_INVENTARIS);
                            String judul_buku = c.optString(TAG_JUDUL);

                            map.put(TAG_KERANJANG,String.valueOf(id_keranjang));
                            map.put(TAG_INVENTARIS,kd_inventaris);
                            map.put(TAG_JUDUL,judul_buku);

                            daftarBukuKeranjang.add(map);
                        }

change your code inside for loop

 for(int i=0;i<buku_keranjang.length();i++){
                    JSONObject c =buku_keranjang.getJSONObject(i);
                    HashMap<String,String> map = new HashMap<String,String>();
                    int id_keranjang = c.getInt(TAG_KERANJANG);
                    String kd_inventaris = c.getString(TAG_INVENTARIS);
                    String judul_buku = c.getString(TAG_JUDUL);

                    map.put(TAG_KERANJANG,String.valueOf(id_keranjang));
                    map.put(TAG_INVENTARIS,kd_inventaris);
                    map.put(TAG_JUDUL,judul_buku);

                    daftarBukuKeranjang.add(map);
   }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM