Java 为什么我的Firebase addvalueEventlistener赢了';你没接到电话吗?

Java 为什么我的Firebase addvalueEventlistener赢了';你没接到电话吗?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,目前,我正在编写一个社交媒体应用程序,现在我想从我的firebase数据库中检索数据,每个用户都有一些评分。mUploads-它存储上传的项目(照片、姓名、城市、ID)。 mDatabaseRef评级-它存储上传项目的评级(有些项目还没有评级)。它们有相同的ID,就像在多倍体->ID中一样 这实际上是一个很大的项目,我已经多次检索到其他类型的firebase元素,但这次不会调用addvalueventlistener,我也弄不明白。为什么? 这不是全部代码,但主要部分是这个。我尝试了好几种方法,

目前,我正在编写一个社交媒体应用程序,现在我想从我的firebase数据库中检索数据,每个用户都有一些评分。mUploads-它存储上传的项目(照片、姓名、城市、ID)。 mDatabaseRef评级-它存储上传项目的评级(有些项目还没有评级)。它们有相同的ID,就像在多倍体->ID中一样

这实际上是一个很大的项目,我已经多次检索到其他类型的firebase元素,但这次不会调用addvalueventlistener,我也弄不明白。为什么?

这不是全部代码,但主要部分是这个。我尝试了好几种方法,但都无济于事。我不仅尝试在这个适配器类中调用它,还尝试在我的另一个类中调用它,在这个类中,我检索mUploads列表的数据

public class ProfileAdapter扩展了RecyclerView。适配器实现了可过滤{
私有上下文;
私人列表多路复用器;
私有列表exampleListFull;
私有OnNoteListener mOnNoteListener;
私有数组列表mratings_数组;
公共浮动明星、numofratings、defaultstars;
私有数据库参考mDatabaseRef_评级;
公共ProfileAdapter(上下文上下文,列表上载,OnNoteListener OnNoteListener){/,ArrayList ratinglist){
mContext=上下文;
mUploads=上传;
exampleListFull=新的ArrayList(上传);
mOnNoteListener=onNoteListener;
对于(int i=0;i

…etc

如果将侦听器传递给适配器的构造函数
onNoteListener
您应该在活动/片段中侦听此接口所做的更改

在您的代码中,在您使用的适配器中

mOnNoteListener=onNoteListener;
但您从未调用接口将值发送到视图(在onDataChange(…)中)

因此,要获取这些值,需要做的是调用接口将这些值发送到视图

因此,在Firebase中获取数据后,请使用回调

mOnNoteListener.yourMethod(your_value);

在另一个主题的帮助下,我可以设法解决这个问题。我刚刚添加了以下代码:

mDatabaseRef_ratings.child("ratings").addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (final DataSnapshot entrySnapshot : dataSnapshot.getChildren()) {
                    alreadyrated=false;
                    for (DataSnapshot propertySnapshot : entrySnapshot.getChildren()) {
                        Log.d("myTag", entrySnapshot.getKey() + " : " + propertySnapshot.getKey());
…等等


这个双for循环足以获取父对象的id和子对象的id,所以现在我的评级应用程序正在运行。

是的,你完全正确。但是我在我的另一个类中尝试了这段代码,在我的另一个类中,我从我的firebase检索其他数据,另一个addvalueListener可以工作,但这个较高的不能工作,这将是真正的问题,一般来说是什么这可能是我的侦听器不会被调用的原因。(我的意思是代码很好,问题出在哪里,或者一些异步问题。)firebase调用不应该在适配器中,适配器不负责处理异步操作,它只是用已经传递的数据填充视图
mDatabaseRef_ratings.child("ratings").addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (final DataSnapshot entrySnapshot : dataSnapshot.getChildren()) {
                    alreadyrated=false;
                    for (DataSnapshot propertySnapshot : entrySnapshot.getChildren()) {
                        Log.d("myTag", entrySnapshot.getKey() + " : " + propertySnapshot.getKey());