我想在所有用户中只向一个用户显示一个按钮。我尝试了orderByKey()
,但它没有奏效!
用户模型有id成员,我尝试使用orderByChild("id")
但结果相同!
我甚至尝试过以下技巧!
int times=0; //class varaible
usersListener = new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot ds, String ss) {
OnlineUser ou = ds.getValue(OnlineUser.class);
if (ou == null) return;
if (times == 0 && myId.equals(ou.id)) {
times++;
button.setVisibility(View.VISIBLE);
}
}
//rest of the code
例如:如果子(用户)列表包含4个成员,我想只向一个人或第一个插入数据的人显示按钮。我不想在用户的模型中使用timeStamp节点。
最初(在xml中)通过将按钮可见性设置为“已消失”然后实现如下代码:
int times=0; //class varaible
usersListener = new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot ds, String ss) {
OnlineUser ou = ds.getValue(OnlineUser.class);
if (ou == null) return;
if (times == 0 && myId.equals(ou.id)) {
times++;
button.setVisibility(View.VISIBLE);
}
}
无法仅向第一个用户显示按钮。而是按钮对所有用户都可见,因为现在按钮的可见性属性设置为可见。因此,每个子元素/用户都可以看到它。
您缺少再次重置可见性。所以我建议您遵循以下代码:
int times=0; //class varaible
usersListener = new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot ds, String ss) {
OnlineUser ou = ds.getValue(OnlineUser.class);
if (ou == null) return;
if (times == 0 && myId.equals(ou.id)) {
times++;
button.setVisibility(View.VISIBLE);
} else {
button.setVisibility(View.GONE);
}
}
//rest of the code
您可能正在寻找的是Firebase Query
,它可以让您根据自己的需要找到孩子。看看这里的文档:
https://firebase.google.com/docs/reference/android/com/google/firebase/database/Query
看看addListenerForSingleValueEvent
方法。