if не проверяет ссылку на firebase для отображения и скрытия кнопок - PullRequest
1 голос
/ 25 марта 2020

У меня вопрос, делает только первое, если кнопка видна, он не проверяет, есть ли у него это узел казино. У меня есть две учетные записи, изображенные на картинке: одна с узлом казино, а другая без. но кнопка opencasino показывает для обоих. в отладке я вижу, что вы ищете текущего пользователя. но результат первого «если» одинаков для обеих учетных записей. Кто-нибудь может мне помочь. Заранее спасибо.

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);


                }



            }
        }

та же проблема с использованием if else

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);


            }



        }
    }

ОТЛАДКА IMG enter image description here

1 Ответ

1 голос
/ 26 марта 2020

Похоже, что вы проверяете значение из ссылки на базу данных, а не DataSnapshot, который ваш слушатель возвращает в onDataChange()

Нечто похожее на приведенное ниже выглядит больше, чем вы ищете, хотя само по себе для l oop может не понадобиться, если смотреть на то, как написан ваш код.

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);
  }
}

Дополнительные примечания

Возможно, вы захотите отделить логи базы данных c из вашей логики видимости; если, конечно, это просто написано таким образом, для простоты изложения вашей проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...