Java 如何知道用户是否使用parse联机/登录?
我正在创建一个应用程序,以了解用户是登录还是联机。首先,我有一个列表视图,显示注册的人。这是我的示例代码Java 如何知道用户是否使用parse联机/登录?,java,android,parse-platform,login,chat,Java,Android,Parse Platform,Login,Chat,我正在创建一个应用程序,以了解用户是登录还是联机。首先,我有一个列表视图,显示注册的人。这是我的示例代码 query.findInBackground(new FindCallback<ParseUser>() { @Override public void done(List<ParseUser> objects, ParseException e) { if (e == null) { if (objects.s
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();
}
}
});
query.findInBackground(新的FindCallback(){
@凌驾
公共void done(列出对象,parsee异常){
如果(e==null){
如果(objects.size()>0){
for(解析用户:对象){
usernames.add(user.getUsername());
}
setAdapter(适配器);
//我想在这里添加if(usernames.isOnline())
//然后列表视图的图像适配器将变为绿色
//而不是透明的
}
}否则{
e、 printStackTrace();
}
}
});
非常感谢。我想要一个在线/离线用户列表。我将非常感谢您告诉我的每一个教程。您可以试试
ParseUser.getCurrentUser()
而不是查询。我通过使用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());
}
}
}
});
}
private void updateUserStatus(布尔联机){
用户。放置(“在线”,在线);
user.savefinally();
}
@凌驾
受保护的空onDestroy(){
super.ondestory();
updateUserStatus(false);
}
@凌驾
恢复时公开作废(){
super.onResume();
loadUserList();
}
公共void loadUserList(){
ParseUser.getQuery().whereNotEqualTo(“用户名”,user.getUsername())
.findInBackground(新的FindCallback(){
@凌驾
公共作废完成(列表li,异常e){
如果(li!=null){
如果(li.size()==0){
Toast.makeText(getApplicationContext(),
“未找到用户。”,Toast.LENGTH\u LONG)
.show();
uList=新阵列列表(li);
ListView列表=(ListView)findViewById(R.id.userListView);
setAdapter(newuseradapter());
}
}
}
});
}
通过adapter类,如果用户在线或不在线,映像将启动。谢谢。我想他正在查看所有用户的列表。并希望为它们设置已连接/未连接状态。您是正确的litelite。感谢您解释我想要的内容。在适配器的item onBind方法上,将用户与
ParseUser.getCurrentUser()
进行比较,并根据需要调整背景。可能不存在内置项。。你可以做的是有最后一个动作的时间戳,如果<1分钟,用户就在线了。。我不认为你能做得比那更好。。