我正在尝试制作一个显示所有在线用户的屏幕,我已经做到了这一点,当您点击在线开关时,您可以在线显示,但是当您在线时看不到自己在列表中。除非我关闭应用程序并重新打开它,否则我可以看到自己。
你可以在我的onDataChange函数中看到列表视图: 1.清除 2.添加不是当前用户的所有用户
那么为什么呢,当应用程序再次加载时我可以在网上看到自己?
这是我的代码:
public class ClassmatesTab extends Fragment implements View.OnClickListener{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tabclassmates, container, false);
onlinetoggleButton = (Switch) rootView.findViewById(R.id.conlinetoggle);
onlinetoggleButton.setOnClickListener(this);
firebaseAuth = FirebaseAuth.getInstance();
userList = new ArrayList<>();
listview = (ListView) rootView.findViewById(R.id.clist);
drefGetCurrentUserName = FirebaseDatabase.getInstance().getReference().child("users").child(firebaseAuth.getUid()).child("UserInfo").child("Name");
final UserList adapter = new UserList(getActivity(), userList);
listview.setAdapter(adapter);
drefGetUsersOnline = FirebaseDatabase.getInstance().getReference().child("Courses").child("CSC 4910").child("Users Online");
drefGetUsersOnline.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
userList.clear();
adapter.notifyDataSetChanged();
for(DataSnapshot userSnapshot : dataSnapshot.getChildren()) {
User user = userSnapshot.getValue(User.class);
if(user.getUserEmail()!=FirebaseAuth.getInstance().getCurrentUser().getEmail()) {
userList.add(user);
adapter.notifyDataSetChanged();
}
listview.setOnItemClickListener(onListClick);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return rootView;
}
void setUserOnline(){
// sets the user online - condensed to make it easier to read
}
@Override
public void onClick(View view) {
if(view == onlinetoggleButton)
{
setUserOnline();
}
}
答案 0 :(得分:0)
您正在通过参考进行比较:
if(user.getUserEmail()!=FirebaseAuth.getInstance().getCurrentUser().getEmail())
如果getUserEmail()
返回例如String
,则最好使用.equals()
。
在
中if ( ! user.getUserEmail().equals(FirebaseAuth.getInstance()...