- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
首先,我知道这个问题已经被问过多次,但我的应用程序最近出现的问题激起了我对这个问题的兴趣。我也阅读了 Firebase 文档。
What is the difference between ChildEventListener and ValueEventListener Firebase interfaces?
从上面的话题来看,Child和Event监听器似乎功能相同,但“灵 active ”不同,我认为是这样。
仅供引用,我将提供我最近项目中的两个示例。
示例 1:
数据库结构
{
"requests" : {
"pushed_id_1" : {
"request_name" : "qjvnocnqjd",
"request_date" : "11 Oct 2017"
},
"pushed_id_2" : {
"request_name" : "qjvnocnqjd",
"request_date" : "10 Nov 2017"
}
}
}
引用上面的结构,我最初的计划是使用Firebase中的查询方法获取最后一个节点的值。这是代码 fragment 。
myRef.child("requests").orderByKey().limitToLast(1).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Request request = dataSnapshot.getValue(Request.class);
Log.d(TAG, "requestDate: " + request.getRequest_date());
}
上面的代码为 request.getRequest_date()
提供了一个空值。经过几次痛苦的解决方案搜索后,我找到了下面的帖子。
Retrieve null values from Firebase database Android
上面链接的 TL;DR 是解决方案是将 ValueEventListener 更改为 ChildListener,它在我的项目中产生了奇迹。然后是我的第二个例子。
示例 2:
数据库结构
{
"users" : {
"user_uid_1" : {
"user_name" : "Admin",
"join_date" : "7 Nov 2017"
},
"user_uid_2" : {
"user_name" : "Member",
"join_date" : "9 Nov 2017"
}
}
}
这是我获取用户数据的代码 fragment 。
myRef.child("users").child(userID).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
Log.d(TAG, "userDeets: " + user.getJoin_date());
}
}
上面的代码没有为 user.getJoin_date()
返回 null。然后,这就是我突然想要一个解释的时候,以便继续前进,我可以更好地理解这两个听众的工作方式并做出相应的选择。
这些是我的具体问题:
感谢您阅读到这一部分,如果这个问题太长,我深表歉意。
最佳答案
要简单得多:ValueEventListener
一次性触发整个结果,ChildEventListener
分别触发结果的每个子节点 .
要确定您是否需要 ValueEventListener
或 ChildEventListener
,需要考虑两件事:
如果您有一个指向单个项目的监听器,您将使用 ValueEventListener
。
如果您有一个指向列表的监听器或查询,无论是否只有一个子项/结果,您都需要处理该列表。您可以通过使用 ChildEventListener
或在 ValueEventListener.onDataChange()
中循环 DataSnapshot.getChildren()
来实现。
关于java - Firebase child 和值(value)听众,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47250212/
这个问题在这里已经有了答案: Callback or Promise? [duplicate] (2 个答案) 关闭 7 年前。 我是一个巨大的 promise 链,但是我意识到其中一个函数返回一个
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: “On file dialog cancel” event in JavaScript 当用户点击文件上传对
我还在学习 flutter 。以下是本教程中的代码。当我调用Authservice配置文件时,它返回Observable>。如何获取其中的数据以进行显示。 这是我到目前为止所做的事情,但是它返回了整个
$(".cblClaimSources").on('click', ':checkbox', function (){ alert('im : '+ $(this).attr('id') +
首先,我知道这个问题已经被问过多次,但我的应用程序最近出现的问题激起了我对这个问题的兴趣。我也阅读了 Firebase 文档。 What is the difference between Child
由于 Tomcat 8.0 已停产,我想将我的应用程序直接升级到 Tomcat 9。 当我将基于 Java 的应用程序从本地部署到我的服务器时,我有一个脚本覆盖了 server.xml。我将服务器升级
我是一名优秀的程序员,十分优秀!