解析用户无法在网络连接不可用时显示

时间:2016-01-08 05:35:51

标签: android

我使用解析后备开发社交消息应用程序我已经成功地从解析中获取用户但是当互联网连接关闭时,列表中的所有数据都消失了。这是我的代码这是一个活动,我检索解析用户但我无法在我的互联网关闭时检索它我尝试了很多,但无法找到方法。

     protected List<ParseUser> mFriends;
        protected ParseRelation<ParseUser> mFriendsRelations;
        protected ParseUser mCurrentUser;
         @InjectView(R.id.friends_search_list) ListView mListView;

//this is the method where users retrieve 

          private void retrieveUsers() {
          mCurrentUser = ParseUser.getCurrentUser();
            mFriendsRelations = mCurrentUser.getRelation(ParseConstant.KEY_FRIENDS_RELATION);
            query = mFriendsRelations.getQuery();
            query.addAscendingOrder(ParseConstant.KEY_USERNAME);
            query.whereNotEqualTo("username", mCurrentUser.getUsername());
                query.findInBackground(new FindCallback<ParseUser>() {
                    @Override
                    public void done(List<ParseUser> friends, ParseException e) {
                        if (e == null) {
                            layout.setRefreshing(false);
                            mFriends = friends;
                            String[] usernames = new String[mFriends.size()];
                            int i = 0;
                            for (ParseUser user : mFriends) {
                                usernames[i] = user.getUsername();
                                i++;
                            }
                            adapter = new MessageFriendsAdapters(MessageFriends.this, mFriends);
                            mListView.setAdapter(adapter);

                            uList = new ArrayList<ParseUser>(friends);
                            onListClick();

                        } else {
                            Snackbar.make(findViewById(android.R.id.content), "Check your network connection", Snackbar.LENGTH_LONG)
                                    .setAction("Okay", null)
                                    .setActionTextColor(Color.WHITE)
                                    .show();
                        }


                    }
                });
            }

1 个答案:

答案 0 :(得分:0)

您正在为您的应用程序使用在线数据库。使用在线服务时,您还需要将它们存储在本地存储中。 Android有许多本地存储空间。你需要经历它们。以下是link

的最佳解释

所以我的建议是首先从parse.com获取用户然后将它们存储在本地数据库中,当你的应用程序没有互联网时,你可以从本地数据库显示用户。

希望它会有所帮助。

例如,在您的代码中,当连接互联网时,它将返回用户列表。让我们定义一个用于存储用户的方法storeToLocalDatabase。和retrieveFromLocalDatabase()

private void retrieveUsers() {
          mCurrentUser = ParseUser.getCurrentUser();
            mFriendsRelations = mCurrentUser.getRelation(ParseConstant.KEY_FRIENDS_RELATION);
            query = mFriendsRelations.getQuery();
            query.addAscendingOrder(ParseConstant.KEY_USERNAME);
            query.whereNotEqualTo("username", mCurrentUser.getUsername());
                query.findInBackground(new FindCallback<ParseUser>() {
                    @Override
                    public void done(List<ParseUser> friends, ParseException e) {
                        if (e == null) {
                            storeToLocaldatabase(friends);
                            layout.setRefreshing(false);
                            mFriends = friends;
                            String[] usernames = new String[mFriends.size()];
                            int i = 0;
                            for (ParseUser user : mFriends) {
                                usernames[i] = user.getUsername();
                                i++;
                            }
                            adapter = new MessageFriendsAdapters(MessageFriends.this, mFriends);
                            mListView.setAdapter(adapter);

                            uList = new ArrayList<ParseUser>(friends);
                            onListClick();

                        } else {
                            Snackbar.make(findViewById(android.R.id.content), "Check your network connection", Snackbar.LENGTH_LONG)
                                    .setAction("Okay", null)
                                    .setActionTextColor(Color.WHITE)
                                    .show();
                        }


                    }
                });

    public void storeToLocaldatabase(List<ParseUser> friends){
    //Here handle operations for storing local database
    }

   List<ParseUser> retrieveFromLocalDatabase(){
   //Handle operations to retrieve data from localstorage.
   return list;
   }