- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 valueEventListener() 用于从 Firebase 获取数据。
这是第一个。
sectionReference.child(classID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot: dataSnapshot.getChildren()){
uidArrayList.add(snapshot.getKey());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
});
}
我想获取 uidArrayList 中的 UID 列表,并使用它来执行一些其他功能。
这是第二个。
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
getUIDsInCurrentClass();
for(DataSnapshot snapshot: dataSnapshot.getChildren()){
User user = snapshot.getValue(User.class);
if(user.getRole().equals("student") && uidArrayList.contains(user.getUid())){
studentArrayList.add(user);
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
});
}
在第二个 Listener 中,您可以看到我想访问 uidArrayList 的内容。我用Log.d看到ArrayList的size是0,也就是说在第二个listener调用的时候没有初始化。
有什么方法可以确保 uidArrayList 在下一个 ValueEventListener() 被访问之前用所有值初始化。
我试过这样做,Event Handlers & Event Listeners Independent of one Another
但它对我不起作用。预先感谢您的回答。
最佳答案
Is there any way that I can make sure that the
uidArrayList
is initialized with all the values before it is accessed in the next ValueEventListener()?
是的。我能想到的最简单的解决方案是使用嵌套查询。所以第二个查询必须嵌套在第一个查询中,这样你就可以确定你的 uidArrayList
不为空。所以代码应该看起来像这样:
sectionReference.child(classID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot: dataSnapshot.getChildren()){
uidArrayList.add(snapshot.getKey());
}
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//getUIDsInCurrentClass();
for(DataSnapshot snapshot: dataSnapshot.getChildren()){
User user = snapshot.getValue(User.class);
if(user.getRole().equals("student") && uidArrayList.contains(user.getUid())){
studentArrayList.add(user);
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError dbError) {
Log.d("TAG", dbError.getMessage()); //Don't ignore potential errors!
}
});
关于java - 如何获得一个 valueEventListener() 的结果并在另一个中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55305822/
我有一个 Firebase valueEvent 监听器: questions.orderByChild("CategoryID").equalTo(categoryID)
我正在使用 ValueEventListeners 从 Firebase 数据库中检索数据。现在我想从查询中删除 ValueEventListener。像这样: query.removeEventLi
出于某种原因,当我在 fragment 中调用 getTitle() 时,它总是返回 null。似乎根本没有添加 ValueEventListener。 当我在监听器内调试或打印 title 的值时,
单击按钮后,我需要从 Firebase 实时数据库获取昵称值。所以我在按钮的 onClick 方法中创建了 singleValueListner() 。但这不起作用。 我尝试过调试它,但代码没有进入s
值事件监听器在每个 Activity 中都正常工作。但在我的注册 Activity 中,花费了超过 2 分钟。我不知道为什么。 这是我的方法 private void verifyuserinpu
我有一个 valueEventListener() 用于从 Firebase 获取数据。 这是第一个。 sectionReference.child(classID).addValueEventLis
我有这个标准的 Firebase 调用: ref.child("user/toys/-K2873267832") .addListenerForSingleValueEvent(new Valu
应用说明 我的应用程序从 Firebase 数据库中检索数据。首先,我将 java 对象正确推送到数据库,并且可以毫无问题地检索数据,使用 Fragments onActivityCreated 中的
我有一个名为“bg”的全局变量。它在 firebase 数据库引用“myRef”的 ValueEventListener 中初始化 但是如果我尝试在 valueeventlistener block
DatabaseReference Ref = FirebaseDatabase.getInstance().getReference(Constants.Client + "/" + path);
我正在尝试使用信号量来等待我的 firebase valueEventListener。我有一个用户信息 Activity ,其中包含用户必须填写的 6 个不同字段。当用户保存他/她的信息时,我想进行
我正在尝试从 Firebase 获取字符串列表,只有在检索到所有数据后,我才会更新我的 UI。目前我在 fragment 类中使用以下代码来实现此目的。 taskList = new ArrayLis
在我下面的代码中,函数 setPhoto(url) 始终接收空 url,但如果我通过单击按钮调用另一个函数并且它需要该 url,它就会正确接收数据。 @Override protected void
我正在尝试使用代码 straight from their documentation 从 Firebase 数据库中读取数据。我的代码如下,当我尝试将 ValueEventListener 添加到我
我有一个使用 Google Firebase 的 Android 应用。 我需要下载带有随机 ID 的图像。 我有一个函数必须返回随机图片的位图。在此函数中,我从单独的数据库条目中读取图片数量,然后生
我正在尝试检测 Firebase 数据库中的值更改。这是我初始化 ValueEventListener 的代码: valueEventListener = new ValueEventListener
我的 Android 应用中遇到了 Firebase 实时数据库的问题。 我正在尝试的是实时更新列表。但更新仅适用于应用程序启动。它不会自动更新。因此,我需要在需要更新时重新启动应用程序。 有没有遗漏
我正在尝试使用接口(interface)异步检查我的 Firebase 数据库中的条目,但我不确定如何以与密码和电子邮件相同的方式实现它。 例子: if (TextUtils.isEmpty(pass
我已经追踪我的代码找到崩溃的根本原因,显然这个构造函数无法更新类的变量。当我试图从此类获取数据时出现空指针异常。您可以安全地假设记录已经在数据库中,它所要做的只是获取数据并将其放入类/对象中。我现在只
我试图返回一个 bool 值,但返回的值始终为 false,即在本例中为 0。 检查变量是一个实例变量,按下按钮时将调用以下函数。 private boolean checkAnswerSubmiss
我是一名优秀的程序员,十分优秀!