您好我是Firebase数据库的新手。目前我正在开发一个Android应用程序。我正在寻求帮助,下面是我的Firabase数据结构。可以告诉我如何检索数据。
要求是我必须检索所有公司。选择特定公司后,必须将相应的公司坐标提取到多边形形状变量中。
请帮助
答案 0 :(得分:1)
为什么没有这样的结构:
的companyName /信息
而不是
Firebase ID /公司名称/信息
即使用update或set而不是push
答案 1 :(得分:1)
public class CompanyIds{
public List<Company> companies;
}
FirebaseDatabase.getInstance()
.getReference("parent node path of these ID's");
现在,在FirebaseRecyclerAdapter中,您可以做的是: -
@Override
protected void populateViewHolder(final MessagesHolder viewHolder, CompanyIds model, int position) {
Company = model.companies.get(0);
//Set data on your view from Company model
}
由于您的身份证只有一家公司,因此您只从第一家公司获得该公司。
现在点击任何项目后,您可以像设置适配器中的数据一样轻松获取公司的详细信息,如坐标或其他任何内容。这不会是个问题。
public class Company{
List<String> Cordinates;
List<Employees> Employees;
//Define other fields
}
答案 2 :(得分:0)
基本上,我从重复的点击中得到了答案,并尝试解决类似的问题。
看看使用add addValueEventListner()的一般方法时,会获得有关根节点的数据库快照。因此,在第一个addValueListner()回调中,获取子节点的引用,然后在其上添加addChildEventListner()。所以这是我的建议:
DatabaseReference databaseReference=FirebaseDatabase.getInstance().getReference();
databaseReference.addValueEventListner(new ValueEventListner(){
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot){
///此处,您的快照是相对于root用户而言的。这样您现在就可以获得子节点的参考
datasnapshot.child("Bureau 507").getRef().addChildEventListner(new
ChildEventListner){
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s){
for(DataSnapshot data: dataSnapshot.getChildren()){
//Now you are at the subtree of Bureua 507. So now you get your data in the form of
key and values
}
//remaining callbacks