Java 如何更改为可以删除的ValueEventListener?

Java 如何更改为可以删除的ValueEventListener?,java,android,firebase,firebase-realtime-database,event-listener,Java,Android,Firebase,Firebase Realtime Database,Event Listener,我有一个Firebase valueEvent侦听器: questions.orderByChild("CategoryID").equalTo(categoryID) .addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot)

我有一个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);
但它不起作用。
我错在哪里?

您已经在这里添加了一个侦听器
问题。addValueEventListener(mQuestionsListener)
,然后需要声明一个新的
ValueEventListener()


是的,但听众有疑问。orderByChild(“CategoryID”)。equalTo(CategoryID)。如果我使用您的代码并添加问题;将不起作用。对吗?
mquestionListener
的类型为ValueEventListener您需要执行以下操作:
questions.orderByChild(“CategoryID”).equalTo(CategoryID).addValueEventListener(mquestionListener)
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) {

                }
            });