簡體   English   中英

如何將 JSON 字符串解析為 ListView?

[英]How to parse a JSON string to ListView?

所以我開始編寫 Java Android 並且我正在嘗試解析我創建的JSON字符串。 所以,我想將它解析為ListView ,我需要人們幫助我。

我的實驗 JSON 文件:

[ 
   { 
      "HoTen":" Nguy\u1ec5n V\u0103n A",
      "NamSinh":1999,
      "DiaChi":"H\u00e0 N\u1ed9i"
   },
   {+},
   {+},
   {+},
   {+},
   {+},
   {+},
   {+},
   {+}
]

我的代碼但它不起作用:

 protected void onPostExecute(String s) {

     //Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
     try {
         mangLV = new ArrayList<String>();

         JSONArray jsonArray = new JSONArray(s);
         JSONObject jsonObject = new JSONObject(s);
         for (int i =0;i<=jsonObject.length();i++)
         {
             JSONObject  object = jsonArray.getJSONObject(i);
             //HoTen.getString("HoTen");
             String HoTen = object.getString("HoTen");
             int NamSinh = object.getInt("NamSinh");
             String DiaChi = object.getString("DiaChi");

         }
         ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(),android.R.layout.simple_list_item_1,mangLV);
         lvSinhVien.setAdapter(adapter);
     } catch (JSONException e) {
         e.printStackTrace();
     }
 }

您似乎沒有使用JSONObject jsonObject = new JSONObject(s); . 你的for應該是for(int i = 0; i<=jsonArray.length();i++) ,從而使你的 jsonObject 過時了。 此外,您正在向您的適配器傳遞一個空列表! 你永遠不會在你的 mangLV 列表中添加任何東西。

試試這個代碼:

    protected void onPostExecute(String s) {
        //Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
        try {
            mangLV = new ArrayList<String>();

            JSONArray jsonArray = new JSONArray(s);
            for(int i = 0; i < jsonArray.length(); i++)
            {
                JSONObject object = jsonArray.getJSONObject(i);
                String HoTen = object.getString("HoTen");
                int NamSinh = object.getInt("NamSinh");
                String DiaChi = object.getString("DiaChi");
                String result = "HoTen " + HoTen + " | NamSinh " + NamSinh + " | DiaChi " + DiaChi;
                mangLV.add(result);  //After fetching the values, add the objects to your list    
            }
            ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(),android.R.layout.simple_list_item_1,mangLV);
            lvSinhVien.setAdapter(adapter);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

這應該添加到您的 ListView 對象中,如下所示:

HoTen Nguy\ễn V\ăn A | NamSinh 1999 | DiaChi H\à N\ội

希望能幫到你

protected void onPostExecute(String s) {

    //Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
    try {
        ArrayList<String> mangLV = new ArrayList<String>();

        JSONArray jsonArray = new JSONArray(s);
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject object = jsonArray.getJSONObject(i);
            //HoTen.getString("HoTen");
            String HoTen = object.getString("HoTen");
            int NamSinh = object.getInt("NamSinh");
            String DiaChi = object.getString("DiaChi");
            String result = String.format("HoTen: %s, NamSinh: %s, DiaChi: %s",
                    HoTen, NamSinh, DiaChi);
            mangLV.add(result);
        }
        ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_1, mangLV);
        lvSinhVien.setAdapter(adapter);
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM