Как перейти на ValueEventListener, который я могу удалить? - PullRequest
0 голосов
/ 28 октября 2019

У меня есть прослушиватель Firebase valueEvent:

 questions.orderByChild("CategoryID").equalTo(categoryID)
            .addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                        Question ques = postSnapshot.getValue(Question.class);
                        Common.questionList.add(ques);
                    }
                    //Random List
                    Collections.shuffle(Common.questionList);
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });

В качестве наилучшей практики для объекта, который можно присоединить и удалить, я хочу изменить код на объект ValueEventListener. Я сделал следующее:

mQuestionsListener = questions.orderByChild("CategoryID").equalTo(categoryID)
            .addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                        Question ques = postSnapshot.getValue(Question.class);
                        Common.questionList.add(ques);
                    }
                    //Random List
                    Collections.shuffle(Common.questionList);
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
    questions.addValueEventListener(mQuestionsListener);

, но не работает. Где я не прав?

1 Ответ

1 голос
/ 28 октября 2019

Вы уже добавили слушателя сюда questions.addValueEventListener(mQuestionsListener);, тогда вам нужно объявить новый ValueEventListener():

ValueEventListener mQuestionsListener = new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                        Question ques = postSnapshot.getValue(Question.class);
                        Common.questionList.add(ques);
                    }
                    //Random List
                    Collections.shuffle(Common.questionList);
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
...