我想用一個分析查詢返回的結果填充ArrayList。當我得到結果時,我將它們添加到ArrayList中,並將ArrayList大小打印到控制檯,以確保添加結果,這是成功的,但是當我返回ArrayList時,它是空的。誰能向我解釋爲什麼會發生這種情況?Parse.com Android公共無效完成不正確地返回我的ArrayList
public ArrayList<ParseObject>findAllGroupByUserId(ParseUser userId){
//TODO hier uit db halen alle groupen van user
final ArrayList<ParseObject> groups = new ArrayList<>();
ParseQuery<Group_user> query = ParseQuery.getQuery("Group_user");
query.whereEqualTo("user_id", userId);
query.findInBackground(new FindCallback<Group_user>() {
@Override
public void done(List<Group_user> objects, ParseException e) {
if (e == null) {
for (Group_user group : objects) {
Log.e("SUCCESS", group.getObjectId() + " , " + group.getGroup_id().getObjectId());
ParseObject g = new Group();
groups.add(g);
}
System.out.println(groups.size() + " :Done method"); //THIS RETURNS 2
} else {
Log.e("ERROR", "message: " + e);
}
Log.e("SUCCESS", "we have " + groups.size() + " results");
}
});
System.out.println(groups.size() + " :return"); // THIS RETURNS 0
return groups;
}
那麼,我必須將return語句放在done()回調函數中?我無法將完成的方法更改爲ArrayList,因爲它是一種重寫方法。 – Montoo
是的,你不能從它返回,所以你需要填充或做數據獲取後需要做的事情。你可以做一些像populateViews(groups)之類的東西,然後從done()方法中調用它。 populateViews()將你的數據映射到你的視圖 – Naveed
那麼,讓我的findAllGroupsByUserId方法返回什麼也是有意義的嗎? – Montoo