1

「me/home」グラフAPI呼び出しを使用して、ログインしているユーザーのFacebookニュースフィードを取得し、結果をアクティビティに表示しています。

今、私は投稿のlike列を照会し、現在のユーザーが投稿を高く評価してステータスを表示するかどうかを確認する多くの方法を試してきました。基本的に、ユーザーが投稿を高く評価したことを示すためにドローアブルを設定しています。

どれも機能しないという理由だけで、これまでに試したコードを実際に投稿することはできません。そして私を信じてください、私は文字通り多くの方法を試しました。

誰かが少なくとも私を正しい方向に導いてくれたら幸いです。

編集:これは、いいね!列をクエリし、結果を現在のユーザーのIDと比較する私の最新の試みです。

このコードは、いいねの数をチェックして、それらをArrayListに追加する場所です。これは、投稿のいいねを取得するためにクエリを実行している場所でもあります。

// GET THE POST'S LIKES COUNT

    if (json_data.has("likes")) {
        JSONObject feedLikes = json_data.optJSONObject("likes");
        String countLikes = feedLikes.getString("count");
        postLikesCountArrayList.add(countLikes);

        // TEST STARTS

        // QUERY THE LIKES COLUMN TO CHECK YOUR LIKE STATUS ON A POST

        Bundle params = new Bundle();
        params.putString(Facebook.TOKEN, Utility.mFacebook.getAccessToken());
        Utility.mAsyncRunner.request(finalThreadID + "/likes&limit=200", params, new LikesListener());

        // TEST ENDS
        } else {
            String countLikes = "0";
            postLikesCountArrayList.add(countLikes);
        }

そして、このコードブロックは、結果がチェックされるリスナー(同じアクティビティのプライベートクラス)です。

private class LikesListener extends BaseRequestListener {
        @Override
        public void onComplete(final String response, final Object state) {

            try {
                JSONObject JOLikes = new JSONObject(response);

                JSONArray JALikes = JOLikes.getJSONArray("data");

                for (int i = 0; i < JALikes.length(); i++) {
                    JSONObject JOTemp = JALikes.getJSONObject(i);

                    if (JOTemp.has("id"))   {
                        String getTempID = JOTemp.getString("id");

                        if (getTempID.equals(initialUserID))    {

                            Runnable run = new Runnable() {

                                @Override
                                public void run() {
                                    // TODO Auto-generated method stub


                                    ImageView postYourLike = (ImageView) findViewById(R.id.postYourLike);
                                    postYourLike.setBackgroundResource(R.drawable.btn_icon_liked);
                                }
                            };
                            TestNewsFeeds.this.runOnUiThread(run);
                        }
                    }

                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
4

1 に答える 1

2

このfqlを使用できます。post_idを置き換えます

SELECT likes.can_like, likes.user_likes FROM stream WHERE  post_id = "1274834235_3976149403543"

応答は次のようになります。user_likesがtrueの場合、彼はそれを気に入っています。

 {
  "data": [
    {
      "likes": {
        "can_like": true, 
        "user_likes": false
      }
    }
  ]
}
于 2012-05-24T12:34:19.887 に答える