2017-12-27 354 views
0

我試圖表示列表視圖即JSONArray用戶數據來自Facebook的圖形API響應,顯示在列表視圖機器人JSONArray數據 - 的Facebook API

下面是我想要的代碼:

    try 
        { 
         JSONObject resObject = response.getJSONObject(); 
         JSONArray jsonArray = resObject.getJSONArray("data"); 


         for (int i = 0; i < jsonArray.length(); i++) { 
          JSONObject jsonObject = jsonArray.getJSONObject(i); 


          if(jsonArray.getJSONObject(i).has("likes")) 
          { 

           JSONObject jsonObjectlikes = jsonObject.getJSONObject("likes"); 

           JSONArray jsonArrayLikeData = jsonObjectlikes.getJSONArray("data"); 

           for (int j = 0; j < jsonArrayLikeData.length(); j++) { 

            JSONObject jsonObjectlike = jsonArrayLikeData.getJSONObject(j); 

            String listid = jsonObjectlike.getString("id"); 
            String listname = jsonObjectlike.getString("name"); 
            HashMap<String, String> contact = new HashMap<>(); 
            contact.put("id", listid); 
            contact.put("name", listname); 
            contactList.add(contact); 
           } 

          } 
          ListAdapter adapter = new SimpleAdapter(
            MainActivity.this, contactList, 
            R.layout.activity_listview, new String[]{"id", "name"}, new int[]{R.id.id, 
            R.id.name}); 

          simpleList.setAdapter(adapter); 
         } 
        } 

這裏是JSON:

{ 
    "data": [ 
     { 
     "id": "xxxxxxxxxxxxxxxxxxxxxxxxxxx", 
     "likes": { 
      "data": [ 
       { 
        "id": "xxxx", 
        "name": "xxx" 
       } 
      ], 
     } 
     } 
    ] 
} 

上面的代碼變得喜歡數據,我想表現出簡單的ListView這個數據。

+0

您contactList爲空,甚至沒有初始化一次。那爲什麼 –

+0

@ahsen與有效的Json分享你的完整代碼? – R2R

+0

好的請稍等,讓我編輯 – ahsen

回答

0

試試這個

  1. 添加contactList=new ArrayList<>();

  2. SimpleAdapter適配器=新SimpleAdapter( MainActivity.this,contactList, R.layout.activity_listview,新的String [] { 「ID」,「命名「},新INT [] {R.id.id, R.id.name});

試試這個代碼

public void GetFacebookData() { 

contactList=new ArrayList<>(); 

Bundle parameters = new Bundle(); 
parameters.putString("fields", "likes"); 
parameters.putString("limit", "50"); 
new GraphRequest(
     AccessToken.getCurrentAccessToken(), 
     "/me/posts", 
     parameters, 
     HttpMethod.GET, 
     new GraphRequest.Callback() { 

      public void onCompleted(GraphResponse response) { 
       //Log.v("TAG", "Facebook Photos response: " + response); 

       try 
       { 
        JSONObject resObject = response.getJSONObject(); 
        JSONArray jsonArray = resObject.getJSONArray("data"); 


        for (int i = 0; i < jsonArray.length(); i++) { 
         JSONObject jsonObject = jsonArray.getJSONObject(i); 

         Log.i("ID", "-->" + jsonObject.getString("id")); 

         if(jsonArray.getJSONObject(i).has("likes")) 
         { 

          JSONObject jsonObjectlikes = jsonObject.getJSONObject("likes"); 

          JSONArray jsonArrayLikeData = jsonObjectlikes.getJSONArray("data"); 

          for (int j = 0; j < jsonArrayLikeData.length(); j++) { 

           JSONObject jsonObjectlike = jsonArrayLikeData.getJSONObject(j); 

           String listid = jsonObjectlike.getString("id"); 
           String listname = jsonObjectlike.getString("name"); 
           HashMap<String, String> contact = new HashMap<>(); 
           contact.put("id", listid); 
           contact.put("name", listname); 
           contactList.add(contact); 

           Log.i("Like ID", "-->" + jsonObjectlike.getString("id")); 
           Log.i("Like Name", "-->" + jsonObjectlike.getString("name")); 
          } 

         } 


         SimpleAdapter adapter = new SimpleAdapter(
           MainActivity.this, contactList, 
           R.layout.activity_listview, new String[]{"id", "name"}, new int[]{R.id.id, 
           R.id.name}); 

         simpleList.setAdapter(adapter); 
        } 
       } 
       catch (JSONException e) 
       { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     }).executeAsync(); 
}   
+0

它現在的工作感謝兄弟.. :) – ahsen

+0

竭誠爲您服務! – R2R

+0

我收到重複值,可以刪除它們? – ahsen