gpt4 book ai didi

java - 如何在没有 EventListener 的情况下从 Firebase 检索数据?

转载 作者:搜寻专家 更新时间:2023-10-30 21:49:19 25 4
gpt4 key购买 nike

我在我的 Android 应用程序上使用 Firebase,我知道如何使用 EventListener 从数据库中获取数据。到目前为止。

我的问题是:我有一个 ReciclerView,它显示来自数据的信息,但仅在我修改数据库时显示。如果我关闭应用程序并再次打开,它不会显示任何内容。然后,我修改了一些东西并在容器中显示了我的所有元素。

有什么方法可以不等待事件而是手动获取来加载这些数据吗?

提前谢谢你。

更新 1(这是我完美运行的代码):

databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
listaDeLyrics.clear();
for (DataSnapshot lyricFromFB : dataSnapshot.getChildren()){
LyricCard lc = lyricFromFB.getValue(LyricCard.class);
listaDeLyrics.add(lc);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {

}

});

我想在不使用 EventListener 的情况下获取数据。

解决方案:我修复了在创建 RecyclerView 之前从数据库中保存数据的问题。似乎什么都没有显示,因为列表是空的(但我不明白为什么它没有响应列表上的更改)

注意:addValueEvent 也是第一次工作,即使什么都不做修改。它在声明时获取信息,然后在事件发生时获取信息。 singleValueEvent 的工作原理完全相同,不同之处在于它只执行一次,只监听第一个事件。

我希望这也能帮助到一些人。

最佳答案

发生这种情况可能是因为您正在使用 addValueEventListener(),它将向引用添加监听器并监听该引用(路径)中的更改。

我推荐的是使用 addListenerForSingleValueEvent(),它只会查询该引用一次,然后从中分离。因此,如果您在每次打开 Activity 时都这样做,您每次都会获得更新后的值。

ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//parse data to recycler view adapter and call notifyDatasetChange()
}

@Override
public void onCancelled(DatabaseError databaseError) {}
});

但是您必须使用事件监听器来读取您的 firebase 数据库,没有其他方法。

关于java - 如何在没有 EventListener 的情况下从 Firebase 检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49083621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com