「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();
}
}
}