如果不检查Firebase参考以显示和隐藏按钮

问题描述 投票:1回答:1

我有一个问题是,只有第一个按钮可见,他没有检查他是否有节点赌场。我有两个帐户,如图中所示,一个带有赌场节点,另一个没有。但opencasino按钮同时显示。在调试中,我可以看到您正在寻找当前用户。但是两个帐户的第一个“ if”结果相同。有谁能够帮助我。预先感谢。

enter image description here

代码

 final DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
    final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    final String userId = user.getUid();


    ref.child("users").child(userId).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            for (DataSnapshot ds : dataSnapshot.getChildren()) {



                if (ref.child("users").child(user.getUid()).equalTo("cassino") != null) {

                    openCassino.setVisibility(View.VISIBLE);
                    buyCassino.setVisibility(View.GONE);

                } if  (ref.child("users").child(user.getUid()).equalTo("cassino") == null ) {
                    buyCassino.setVisibility(View.VISIBLE);
                    openCassino.setVisibility(View.GONE);


                }



            }
        }

如果不是,则使用相同的问题

ref.child("users").child(userId).addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        for (DataSnapshot ds : dataSnapshot.getChildren()) {



            if (ref.child("users").child(user.getUid()).equalTo("cassino") != null)  {
                openCassino.setVisibility(View.VISIBLE);
                buyCassino.setVisibility(View.GONE);

            } else   {
                buyCassino.setVisibility(View.VISIBLE);
                openCassino.setVisibility(View.GONE);


            }



        }
    }

DEBUG IMGenter image description here

android firebase-realtime-database
1个回答
1
投票

似乎您正在从数据库引用中检查值,而不是侦听器在onDataChange()中返回的DataSnapshot。>

类似于下面的内容似乎是您想要的,尽管查看代码的编写方式可能不需要for循环本身。

for (DataSnapshot ds : dataSnapshot.getChildren()) {
  if (ds.child("cassino").exists())  {
    openCassino.setVisibility(View.VISIBLE);
    buyCassino.setVisibility(View.GONE);
  } else {
    buyCassino.setVisibility(View.VISIBLE);
    openCassino.setVisibility(View.GONE);
  }
}

附加说明

您可能希望将数据库逻辑与可见性逻辑脱钩;除非当然是为了简化表达问题的方式而写的。

© www.soinside.com 2019 - 2024. All rights reserved.