Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何知道用户是否使用parse联机/登录?_Java_Android_Parse Platform_Login_Chat - Fatal编程技术网

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分钟,用户就在线了。。我不认为你能做得比那更好。。