「me/home」グラフAPIを呼び出した後、JSONの結果を解析しているときに、FQLを使用して別のクエリを作成しようとしています。FQLクエリの問題は、以前の質問で解決されました。
私の実装の背景は次のとおりです。私はを使用しており、メインアクティビティから、複数のを使用してBaseAdapter
解析されたデータを送信しています。FQLクエリを作成していない場合、すべてが桃色です。しかし、FQLクエリを導入すると、クエリは常にに設定された後に実行されます。これにより、arrayindexoutofbound例外が発生し続けます。JSON
ArrayLists
adapter
ListView
これは、JSON結果の解析中に追加のFQLクエリを含めて使用しているコードです。コードを短くするために、残りの部分は問題なく機能するため、関連する部分を含めます。しかし、もっと必要な場合は、私もそれを上げます。
// 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
Runnable run = new Runnable() {
@Override
public void run() {
graph_or_fql = "fql";
String query = "SELECT likes.user_likes FROM stream WHERE post_id = \'"
+ finalThreadID + "\'";
Bundle params = new Bundle();
params.putString("method", "fql.query");
params.putString("query", query);
Utility.mAsyncRunner.request(null, params, new LikesListener());
}
};
TestNewsFeeds.this.runOnUiThread(run);
// TEST ENDS
} else {
String countLikes = "0";
postLikesCountArrayList.add(countLikes);
}
そして、これはLikesListener
クラスのコードです。これは、同じアクティビティで宣言されたプライベートクラスです。
private class LikesListener extends BaseRequestListener {
@Override
public void onComplete(final String response, final Object state) {
// Log.e("response", response);
try {
JSONArray JALikes = new JSONArray(response);
// Log.v("JALikes", JALikes.toString());
for (int j = 0; j < JALikes.length(); j++) {
JSONObject JOTemp = JALikes.getJSONObject(j);
// Log.e("JOTemp", JOTemp.toString());
if (JOTemp.has("likes")) {
JSONObject optJson = JOTemp.optJSONObject("likes");
// Log.v("optJson", optJson.toString());
if (optJson.has("user_likes")) {
String getUserLikeStatus = optJson.getString("user_likes");
Log.e("getUserLikeStatus", getUserLikeStatus);
arrayLikeStatus.add(getUserLikeStatus);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
デバッグを使用して、クラッシュの原因は2番目のクエリが完了する前に呼び出されたsetAdapterであることがわかりました。クラッシュが発生した後、ログがlogcatに追加されているのがわかります。
これに対する解決策についての助けはありがたいです
更新:私があきらめようとしていたとき、ほとんど解決策を見つけました。