Android 将获取的对象解析为本地存储
我正在使用Parse.com Android SDK,希望我的应用程序在大多数情况下都能离线和在线运行。 我有一个对象“Friends”,在一列中包含一个ParseUser对象。在我的应用程序中,我想在使用Friends对象(ParseObject)时获取ParseUser的用户名。当我的应用程序在线时,没有问题。最初,我查询所有Friends对象,将所有对象固定在本地数据存储中,将它们保存在列表中,然后调用Android 将获取的对象解析为本地存储,android,parse-platform,Android,Parse Platform,我正在使用Parse.com Android SDK,希望我的应用程序在大多数情况下都能离线和在线运行。 我有一个对象“Friends”,在一列中包含一个ParseUser对象。在我的应用程序中,我想在使用Friends对象(ParseObject)时获取ParseUser的用户名。当我的应用程序在线时,没有问题。最初,我查询所有Friends对象,将所有对象固定在本地数据存储中,将它们保存在列表中,然后调用((ParseUser)friendList.get(i).get(“user”)).g
((ParseUser)friendList.get(i).get(“user”)).getUsername()
实际工作正常的操作。但是当应用程序脱机时,这一行会抛出异常,因为没有internet连接,“内部”ParseUser对象的数据不可用。看起来Friends对象被锁定了,但是内部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();
}
}
});
}
锁定
朋友
对象的内部对象,尤其是在使用解析关系
时是否解决了此问题?我似乎被同样的问题困扰着
usernameView.setText(((ParseUser) item.get(UserManager.FRIEND_COLUMN)).getUsername());