Android 将获取的对象解析为本地存储

Android 将获取的对象解析为本地存储,android,parse-platform,Android,Parse Platform,我正在使用Parse.com Android SDK,希望我的应用程序在大多数情况下都能离线和在线运行。 我有一个对象“Friends”,在一列中包含一个ParseUser对象。在我的应用程序中,我想在使用Friends对象(ParseObject)时获取ParseUser的用户名。当我的应用程序在线时,没有问题。最初,我查询所有Friends对象,将所有对象固定在本地数据存储中,将它们保存在列表中,然后调用((ParseUser)friendList.get(i).get(“user”)).g

我正在使用Parse.com Android SDK,希望我的应用程序在大多数情况下都能离线和在线运行。 我有一个对象“Friends”,在一列中包含一个ParseUser对象。在我的应用程序中,我想在使用Friends对象(ParseObject)时获取ParseUser的用户名。当我的应用程序在线时,没有问题。最初,我查询所有Friends对象,将所有对象固定在本地数据存储中,将它们保存在列表中,然后调用
((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());