我在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()
它将仅查询该引用一次,然后从该引用断开。因此,如果每次您的活动打开时都执行此操作,则每次都会有更新的值。
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) {}
});
但是,您必须使用eventlisteners来读取您的Firebase数据库,没有其他方法。
问题内容: 我想从我的Node.js应用程序中的Mongoose设置中检索一些数据。我注意到,无论我写什么作为字段选择,我总是会得到该字段。有没有一种方法不可以获取它?我现在是这样的: 并记录下包含该字段的结果。 问题答案: 必须明确排除。例如,
DatabaseHelper->getOffers()
我们想要自己的db连接配置而不是使用JNDI,但同时,我们也想使用DataSource而不是使用Drive verManager,怎么做?
我正在尝试从FireBase获取所有用户的名称,该名称包含给定的字符串。例如,如果我有这些用户: 我希望所有用户的名称都包含'D',因此我希望得到这样的结果: 这是我的Firebase目前的结构: 2)现在我不想有服务器端代码,什么是实现自定义索引的好的和有效的方法? 谢谢
问题内容: 我正在尝试设置spring xml配置,而不必创建进一步的。但是,即使我将数据库属性包括在 spring.xml: 我在这里想念什么? 问题答案: 在entityManagerFactory bean定义中指定“ packagesToScan”和“ persistenceUnitName”属性。 请注意,这适用于Spring版本> 3.1
问题内容: 我正在学习使用Selenium(v2.20)来领先一些 即将使用它创建浏览器测试的程序员。我想在 陷阱到达之前发现它们,而我却跌入了一个陷阱。 当我创建ChromeDriver时,它始终会弹出“ Google Chrome EULA”并 显示两个按钮:“接受并运行”和“取消”。因为我希望这是一个 自动化测试,所以让用户单击按钮是不可能的。 我查看了Chromium CommandSwi