2015-10-12 92 views
0

我有以下的JSON:添加JSON對象與對象的數組列表視圖

{ 
    "user_wallets": [ 
     { 
      "user_id": "56", 
      "wallet_id": "25", 
      "wallet_name": "Dandora Youth Voucher", 
      "balance": "1,150.00" 
     }, 
     { 
      "user_id": "56", 
      "wallet_id": "36", 
      "wallet_name": "Pfizer Chama", 
      "balance": "0.00" 
     }, 
     { 
      "user_id": "56", 
      "wallet_id": "37", 
      "wallet_name": "Sunshine", 
      "balance": "1,000.00" 
     } 
    ] 
} 

我想將wallet_namebalance添加到列表視圖這樣的:

wallet_name  balance 
wallet_name  balance 
wallet_name  balance 

等。但是,我使用volley庫對我的api進行http調用,但響應顯示並且空Toast消息。

我在哪裏可能會出錯?

我作出的調用是這樣的:

public void getMyWallets(){ 
    final JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET, 
      url, null, new Response.Listener<JSONObject>() { 

     @Override 
     public void onResponse(JSONObject response) { 
      try{ 
       JSONArray user_wallets = response.getJSONArray("user_wallets"); 

       for(int i = 0; i<user_wallets.length();i++){ 
        JSONObject wallet = user_wallets.getJSONObject(i); 

        WalletModel walletModel = new WalletModel(); 
        walletModel.setWallet_name(wallet.getString("wallet_name")); 
        walletModel.setBalance(((Number) wallet.get("balance")).doubleValue()); 

        walletModelList.add(walletModel); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      walletListAdapter.notifyDataSetChanged(); 
     } 
    }, new Response.ErrorListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      Toast.makeText(getApplicationContext(), 
        error.getMessage(), Toast.LENGTH_SHORT).show(); 
      hidepDialog(); 
     } 

    }); 
    MyApplication.getInstance().addToRequestQueue(jsonObjReq); 


} 
+0

請出示您的日誌 –

+0

自尊心,我使用過Android Studio 1.4,我可以似乎沒有找到日誌:| –

+0

已建立的連接被主機中的軟件中止java.io.IOException:已建立的連接已由您的主機中的軟件在sun.nio處的sun.nio.ch.SocketDispatcher.write0(本地方法)中止。 ch.SocketDispatcher.write(SocketDispatcher.java:51)at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:94)at sun.nio.ch.IOUtil.write(IOUtil.java:65)at sun.nio .ch.SocketChannelImpl.write(SocketChannelImpl.java:450)at com.android.ddmlib.JdwpPacket.writeAndConsume(JdwpPacket.java:213)at ... [Long text] –

回答

0

有一個在VolleyError一個networkResponse參考,檢查出來,看看您是否爲了明白的地方是錯誤得到任何有用的信息。

事情是這樣的:

@Override 
public void onErrorResponse(VolleyError error) { 
    if(error.networkResponse.data!=null) { 
     try { 
      body = new String(error.networkResponse.data,"UTF-8"); 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

我嘗試過使用Toast並且它是空的。至於日誌,我似乎沒有讓他們在AS 1.4 –

0

所以我想通了,有一個與代碼沒有問題。問題是排隊請求超時問題: 檢出 Volley RequestQueue Timeouthttps://stackoverflow.com/questions/17094718/android-volley-timeout?rq=1。我做這解決了我的空單的問題:

RequestQueue mRequestQueue = Volley.newRequestQueue(getApplicationContext()); 

MyApplication.getInstance().addToRequestQueue(jsonObjReq); 
    int socketTimeout = 15000;//30 seconds - change to what you want 
    RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
      DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); 
    jsonObjReq.setRetryPolicy(policy); 
    mRequestQueue.add(jsonObjReq); 

這增加了更多的請求超時的數據中獲取:)