Это фрагмент моего кода с небольшими изменениями в именах.Parse findInBackground не добавляет к глобальному arraylist?
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;
}
Моя проблема заключается в запросе(), если я проверить размер tempListItems после сделанных() размер не пуст. Однако, как только query() будет завершен, и я вернусь к initList(), если снова проверить tempListItems, он пуст.
done() - метод в запросе(). Я забыл технический термин!
Я не уверен, как убедиться, что изменения в tempListItems во время запроса() и done() остаются после его возвращения.
и внутри 'done' метод? –
done() внутри запроса(), извините за путаницу – Tony