【发布时间】:2015-11-24 06:00:38
【问题描述】:
这是我的代码的 sn-p,名称稍作修改。
String[] items;
ArrayList<String>tempListItems;
public void initList() {
if(query()){
items = new String[tempListItems.size()];
items = tempListItems.toArray(items);
Arrays.sort(items);
Log.d("HSearch - initList", "Generate Clean List");
Log.d("initList - temp size", Integer.toString(tempListItems.size()));
Log.d("initList - items size", Integer.toString(items.length));
}
}
private boolean query() {
tempListItems = new ArrayList<String>();
ParseQuery<ParseObject> query = ParseQuery.getQuery("Table");
query.orderByAscending("name");
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> list, com.parse.ParseException e) {
if (e == null) {
for (ParseObject name : list) {
tempListItems.add(name.getString("name"));
}
} else {
Log.d("score", "Error: " + e.getMessage());
}
}
});
return true;
}
我的问题出在 query() 中,如果我在 done() 之后检查 tempListItems 的大小,则大小不为空。但是,一旦 query() 完成并返回到 initList(),如果我再次检查 tempListItems,它就是空的。
done() 是 query() 中的一个方法。我忘记了它的技术术语!
我不确定如何确保在 query() 和 done() 期间对 tempListItems 所做的更改在它返回后保持不变。
【问题讨论】:
-
在
done方法里面? -
done() 在 query() 中,很抱歉造成混淆
标签: java android parse-platform