Firebase RecyclerView OnDataChanged仅显示最后一个元素

时间:2018-06-26 11:51:25

标签: android firebase firebase-realtime-database android-recyclerview firebaseui

我正在this之后开发android聊天应用程序我正在检索整个朋友列表,然后根据他们的用户ID从用户数据(即用户名,用户图像和用户状态)中检索用户的数据数据库如下所示。

https://i.stack.imgur.com/3opoN.png

https://i.stack.imgur.com/0yC2K.png

那么现在主要的问题是什么,主要的问题是以下代码:

{{1}}

它给了我一个recyclerView结果 其中仅显示最后一个元素,如图所示

https://i.stack.imgur.com/xteUF.png

我用谷歌搜索了它,还搜索了Stackover流,但最近3天找不到解决方案。 会问一个类似的问题,但是我无法解决here的问题 请帮助,不要拒绝我的问题 感谢您的帮助

2 个答案:

答案 0 :(得分:1)

addValueEventListener方法中的

onBindViewHolder是一个非常糟糕的主意。您可以在Fragment中创建一个用户列表,然后将该列表传递给Adapter。

答案 1 :(得分:1)

之所以发生这种情况,是因为onBindViewHolder()方法的调用次数与数据库中的条目数一样多。因此,在这种情况下,此方法内部的所有内容也会被触发。这意味着您将在每个onBindViewHolder()方法调用上附加一个侦听器。不需要这样做。您可以直接从model对象中获取用户名和所有其他属性,该对象作为参数传递给此方法,如下所示:

String UserName = model.getUserName();
String UserStatus = model.getUserStatus();
//And so on for the other properties.