我正在开发一个应用程序,数据库中有像医生和病人这样的用户。患者数据中可能有医生userId,医生数据中可能有患者userId
。因为在应用程序中,医生将看到有关其患者的一些信息。我开发了这段代码,但是在设置适配器之前无法将患者信息添加到Arraylist中。这是我的代码:
myRef.child("users")
.child(firebaseUser.getUid()).child("patients").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds: dataSnapshot.getChildren()){
AddingPatients addingpatient = ds.getValue(AddingPatients.class);
if(addingpatient.getConfirm().equals("yes")){
myref.child("users").child(addingpatient.getUserId()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
Users patient = dataSnapshot.getValue(Users.class);
name.add(patient.getName()+" "+patient.getSurname());
sicks.add(patient.getSicks());
patientuid.add(patient.getUserId());
}
}
@Override
public void onCancelled(DatabaseError error) {
}
});
}
}
PatientSelectionAdapter adapter= new PatientSelectionAdapter(getContext(),name,sicks,hastauid);
rv.setAdapter(adapter);
rv.setLayoutManager(new LinearLayoutManager(getContext()));
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
当我调试代码时,看到的是,设置适配器后,患者信息会添加到列表中。所以我RecyclerView
是空的。我该如何解决这个问题?
要解决此问题,请移动以下代码行:
PatientSelectionAdapter adapter= new PatientSelectionAdapter(getContext(),name,sicks,hastauid);
rv.setAdapter(adapter);
rv.setLayoutManager(new LinearLayoutManager(getContext()));
在第二种onDataChange()
方法中,如下所示:
myref.child("users").child(addingpatient.getUserId()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
Users patient = dataSnapshot.getValue(Users.class);
name.add(patient.getName()+" "+patient.getSurname());
sicks.add(patient.getSicks());
patientuid.add(patient.getUserId());
}
PatientSelectionAdapter adapter= new PatientSelectionAdapter(getContext(),name,sicks,hastauid);
rv.setAdapter(adapter);
rv.setLayoutManager(new LinearLayoutManager(getContext()));
}
@Override
public void onCancelled(DatabaseError error) {}
});
发生这种情况是因为onDataChange()
具有异步行为。请在这里查看 模式详细信息。
我正在寻找一种方法,以数组[]或字符串等格式从Firebase实时数据库获取数据。 我的数据库如下所示:链接到数据库的图像 或者:
我有一个问题,从多个路径从Firebas eDatabase获取数据。我正在编写一个Endomondo克隆,我有一个数据库结构如下: 现在我想在feed选项卡中列出我朋友的所有锻炼。所以要做到这一点,我需要做三件事。 1)遍历我的配置文件(user_1)以获取我所有朋友的ID。 2)当我拥有这些ID时,我需要迭代它们的配置文件以获得它们的名称来显示。 3)遍历锻炼以获得我朋友的所有锻炼。 现在我想
我创建了一个名为的类来从firebase数据库中获取所有用户数据。下面是我用来获取firebase数据(用户名)的方法。 而firebase链接也没有问题。它还提供了用户名。 当我用一些虚拟的预定义字符串数据替换username时,这段代码就可以工作了。但是当我添加用户名时,它会给我以下错误。
问题内容: 我已将用户注册的日期保存为日期时间,例如 2011-12-06 10:45:36 。我已运行此查询,并且希望此项目 -2011-12-06 10: 45 : 36- 将被选择: 但是不是。存在任何优雅的方式,该如何选择?我最初的想法是,但是看起来不太好。 问题答案: 您的问题是日期的简短版本使用午夜作为默认设置。因此,您的查询实际上是: 这就是为什么您看不到10:45的记录的原因。 更
我试图从Firebase数据库中读取数据,我已经到处阅读和查找,但我已经走到了死胡同。 这就是我所做的一切。 依赖项: 实现'com.google.firebase: Firebase存储: 9.2.1' 实现'com。谷歌。firebase:firebase数据库:9.2。1' 实现'com。谷歌。firebase:firebase授权:9.2。1' 实现'com。谷歌。火基:火基核心:9.2。
我有一个带有此模式的数据库: 我测试了这段代码,但我无法从数据库中获得任何消息。我会感谢你的帮助。