2016-11-22 112 views
-1

即时通讯创建一个应用程序,以了解用户是否登录或在线。所以首先我有一个列表视图,即注册人员。这是我的示例代码如何知道用户是否在线/使用解析登录?

query.findInBackground(new FindCallback<ParseUser>() { 
    @Override 
    public void done(List<ParseUser> objects, ParseException e) { 
     if (e == null) { 
      if (objects.size() > 0) { 
       for (ParseUser user : objects) { 
        usernames.add(user.getUsername()); 
       } 
       userListView.setAdapter(adapter); 
       // i want to add here like if(usernames.isOnline()) 
       // then the image adapter of list view will change to green 
       // instead of transparent 
      } 
     } else { 
      e.printStackTrace(); 
     } 
    } 
}); 

非常感谢。我想拥有一个在线/离线用户列表。我会很感激你会告诉我的每一个教程。

+0

可能并不存在建立在..你可以做的是有最后一个行动的时间戳,如果其<1分钟的用户在线..我不认为你可以做任何事情比这更好.. –

回答

0

我用的onResume()和的onDestroy

private void updateUserStatus(boolean online) { 
    user.put("online", online); 
    user.saveEventually(); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    updateUserStatus(false); 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    loadUserList(); 
} 

public void loadUserList() { 
    ParseUser.getQuery().whereNotEqualTo("username", user.getUsername()) 
      .findInBackground(new FindCallback<ParseUser>() { 
       @Override 
       public void done(List<ParseUser> li, ParseException e) { 
        if (li != null) { 
         if (li.size() == 0) { 
          Toast.makeText(getApplicationContext(), 
            "No users found.", Toast.LENGTH_LONG) 
            .show(); 

          uList = new ArrayList<ParseUser>(li); 
          ListView list = (ListView) findViewById(R.id.userListView); 
          list.setAdapter(new UserAdapter()); 
         } 
        } 
       } 
      }); 

} 

,并且按适配器类得到了我的解决方案,图像将掀起和如果用户是否在线。谢谢。

0

你可以尝试

ParseUser.getCurrentUser() 

,而不是查询。

+0

我认为他正试图查看他所有用户的列表。并希望有一个连接/未连接的状态。 – litelite

+0

你是正确的litelite。谢谢你解释我想要的。 –

+0

在适配器的项目onBind方法上,将用户与'ParseUser.getCurrentUser()'进行比较,并根据需要调整背景。 –

相关问题