gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:22:52 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/58579057/

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