我尝试解析数据库中的数据并将其显示在listview上。但是,由于logcat中没有显示Volley错误,所以我不知道如何解决。这是我的代码:
JsonResult
{"result":[{"namaBarang":"kabel","jumlahBarang":"5","tglKel":"2018-06-06"},{"namaBarang":"optical power meter","jumlahBarang":"5","tglKel":"0000-00-00"}]}
从该json结果中,我尝试使用 JsonObject 对其进行解析,这就是我的 JsonObject 的样子。
活动
JsonObjectRequest bkRequest=new JsonObjectRequest(Request.Method.GET, >url, null ,new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { try { JSONObject obj = response.getJSONObject("result"); BarangKeluar bk = new BarangKeluar(); bk.setNamaBarang(obj.getString("namaBarang")); bk.setJumlahBarang(obj.getString("jumlahBarang")); bk.setTglBarang(obj.getString("tglBarang")); bkList.add(bk) ; } catch (JSONException e) { e.printStackTrace(); } // notifying list adapter about data changes // so that it renders the list view with updated data adapter.notifyDataSetChanged(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d(TAG, "Error: " + error.getMessage()); } }); // Adding request to request queue AppController.getInstance().addToRequestQueue(bkRequest);
但是当我将其推送到手机上后,列表视图中没有填充我的json。
UPDATE1 已经尝试尝试使用手枪和IntelliJ Amiya代码,但仍无法正常工作。
Logcat
D / TextView:具有样式的setTypeface:0 I / System.out:(HTTPLog)-静态: isSBSettingEnabled false I / System.out:(HTTPLog)-静态: isSBSettingEnabled false D / AbsListView:onsize更改D / Volley:[1] 2.onErrorResponse:AppController
但是我的AppController与本教程的This配合正常。
标记的线程在Another个线程中重复。我对此进行了查找,不同的是大多数答案都使用HttpConnection。
最后,我解决了这个问题。
这是修复后的代码。
活动
//Create JsonObjectRequest JsonObjectRequest bkRequest = new JsonObjectRequest(Request.Method.GET, url, null,new Response.Listener<JSONObject>(){ @Override public void onResponse(JSONObject response) { Log.d(TAG, response.toString()); try { JSONArray obj = response.getJSONArray("result"); for(int i=0;i< obj.length();i++) { JSONObject json = obj.getJSONObject(i); BarangKeluar bk = new BarangKeluar(); bk.setNamaBarang(json.getString("namaBarang")); bk.setJumlahBarang(json.getString("jumlahBarang")); bk.setTglBarang(json.getString("tglKel")); //Adding data into array bkList.add(bk); } } catch (JSONException e) { e.printStackTrace(); e.getMessage(); } // notifying list adapter about data changes // so that it renders the list view with updated data adapter.notifyDataSetChanged(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d(TAG, "Error: " + error.getMessage()); } }); // Adding request to request queue AppController.getInstance().addToRequestQueue(bkRequest);
答案 0 :(得分:1)
预期错误为
JSONArray无法转换为JSONObject
result
是 JSONArray
。tglBarang
KEY 。设置适当的名称。不要
JSONObject obj = response.getJSONObject("result");
要做
JSONArray jsonArray = response.getJSONArray("result");
验证码
JSONArray jsonArray = response.getJSONArray("result");
for(int i=0;i<jsonArray.length;i++)
{
JSONObject json = jsonArray.getJSONObject(i);
String namaBarang = json.getString("namaBarang");
String jumlahBarang = json.getString("jumlahBarang");
String tglKel = json.getString("tglKel");
BarangKeluar bk = new BarangKeluar();
bk.setNamaBarang(namaBarang);
bk.setJumlahBarang(jumlahBarang);
bk.setTglBarang(tglKel);
bkList.add(bk)
}
答案 1 :(得分:1)
您错过了JSONArray和“ tglBarang”->“ tglKel”
JSONArray obj = response.getJSONArray("result");
for (int i = 0; i < obj.length(); i++) {
String namaBarang = obj.getJSONObject(i).getString("namaBarang");
String jumlahBarang = obj.getJSONObject(i).getString("jumlahBarang");
String tglKel = obj.getJSONObject(i).getString("tglKel");
}