我正在使用Parse.com Android SDK,希望我的应用可以离线工作,也可以在线工作。
我有一个对象"朋友"在一列中包含ParseUser对象。在我的应用程序中,我希望在拥有Friends对象(ParseObject)时获取ParseUser的用户名。当我的应用程序在线时,没有问题。最初我查询所有Friends对象,将所有这些对象固定在我的本地数据存储区中,将它们保存在List中,然后调用((ParseUser) friendList.get(i).get("user")).getUsername()
实际上工作正常。但是当应用程序处于脱机状态时,会在此行中引发异常,因为内部'没有互联网连接,ParseUser对象的数据不可用。看起来好友对象被固定了,但是内部ParseUser对象不会被存储所有数据,而只能存储它们的ID以便从服务器获取它们。如何以递归方式存储整个Friends对象,同时影响它的所有内部对象?
// When online
public void loadFriends() {
final ParseQuery<ParseObject> query = ParseQuery.getQuery(PARSE_FRIENDS_CLASS);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> list, ParseException e) {
if (e == null) {
ParseObject.pinAllInBackground(list);
friends.addAll(list);
} else {
loadFriendsLocally();
}
timer.cancel();
}
});
// When offline
private void loadFriendsLocally() {
final ParseQuery<ParseObject> query = ParseQuery.getQuery(PARSE_FRIENDS_CLASS);
query.fromLocalDatastore();
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> list, ParseException e) {
if (e == null) {
friends.addAll(list);
}
else {
e.printStackTrace();
}
}
});
}
抛出异常的行(在ArrayAdapter的getView()方法中):
usernameView.setText(((ParseUser) item.get(UserManager.FRIEND_COLUMN)).getUsername());
答案 0 :(得分:0)
固定Friend
对象的内部对象,尤其是当您使用ParseRelation
时。