Выполнение кода не происходит так, как это было при поиске, существует ли дочерний элемент в базе данных Firebase или нет - PullRequest
0 голосов
/ 26 апреля 2020

Я хочу проверить, присутствуют ли данные в базе данных или нет, но когда я запускаю приведенный ниже код, я получаю вывод, но не так, как хотелось бы, я имею в виду, что то, что нужно выполнить на третьем месте, выполняется в самый последний Исполнение идет не так, как я думал go

Также мое дерево json выглядит так:

Это ссылка на изображение моего json tree

user-
-randomUserID-
----- имя: значение
----- телефон: значение
----- создано для :
------------ phoneNumber: id

Я хочу go выполнить, чтобы он выдавал следующие сообщения журнала

 I/heyey1: heyey
 I/hey3null: hey2
 I/heyhere3: heyey
 I/heyvalue of k: heyey
 I/heyre4: heyey
 I/heyre45: heyey

но я получаю это

 I/heyey1: heyey
 I/heyhere3: heyey
 I/heyvalue of k: heyey
 I/heyre4: heyey
 I/heyre45: heyey
 I/hey3null: hey2

Код:

public class userListAdapter extends RecyclerView.Adapter<userListAdapter.userListViewHolder> {

    variableValue b = new variableValue();

        holder.layout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                String n="123456789";

                b.setVal("heyey");
                Log.i("heyey1",b.getVal());

                String k=checkUser(n);

                Log.i("heyvalue of k",k);

                Log.i("heyre4",b.getVal());

                if (b.getVal()!=null)
                {         
                    Log.i("heyre45",b.getVal());
                }
                else
                {
                 /// some code
                }
            }
        });
    }

    private String checkUser(final String n) {

        final DatabaseReference dbref=FirebaseDatabase.getInstance().getReference().child("user");

        dbref.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if (dataSnapshot.hasChild(n))
                {
                    b.setVal(dataSnapshot.child(n).getValue().toString());
                    Log.i("hey2",b.getVal());
                }
                else
                {
                     b.setVal("heymhey");
                    Log.i("hey3",b.getVal());
                }
            }

        Log.i("heyhere3",b.getVal());
        return b.getVal();
    }

    public class variableValue
    {
        private String val="kororr";

        public String getVal() {
            return val;
        }

        public void setVal(String val) {
            this.val = val;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...