在致电“我/家”图表API之后,在解析JSON结果的同时,我正试图用 FQL 进行另一个查询。 FQL 查询问题在我的前一个问题中得到了解决。
我执行的背景是: 我使用 < code> baseAdapter , 从主要活动发送数据, 我使用多个 < code> JSON 发送来自 < code> JSON 的数据解析, 如果我不制作 FQL 查询, 一切都是桃色的。 但是, 当我介绍 FQL 查询时, 查询总是在 < code> adapter 之后运行, 被设置为 < code> 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);
}
这是Lexistener
类的代码。 它是一个在同一活动中被宣布为私人类的代码 :
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();
}
}
}
我用调试方法发现,坠机的原因是在第二个查询完成之前调用设置的Adapter。 我看到在坠机发生后日志被添加到日志中 。
任何帮助解决问题的帮助都将受到赞赏