我想从数据库中检索数据并将其插入到recycleview中。 问题是我不知道可以从谁那里获取数据集中的数据。
首先,看看我的数据集结构:Json在下面添加:
"Places" : {
"-M11-OIIHbKTVqCJ-Swv" : {
"name" : "Farmacia Pagani Dr. Roberto",
"others" : {
"01" : {
"Nome" : "Ambilify",
"Price" : 100
},
"02" : {
"Nome" : "Acetaminophoen",
"Price" : 120
}
}
},
"-M11-OJJCGAPdJUknLXX" : {
"name" : "FARMACIA DR. TUMIATTI MARIANO",
"others" : {
"01" : {
"Nome" : "Ambilify",
"Price" : 100
},
"02" : {
"Nome" : "Acetaminophen",
"Price" : 120
}
}
}
},
所以我想要的是:由于我具有键“ -M11-OIIHbKTVqCJ-Swv”,因此我想使用该键在对象内执行搜索。为此,我需要访问位置/关键对象(-M11-OIIHbKTVqCJ-Swv)/其他,然后基于Nome(意为意大利语)进行搜索。我想退回Nome:Ambilify价格:100
这就是我所做的:
private void firebaseUserSearch(String searchText) {
DatabaseReference searchforData = FirebaseDatabase.getInstance().getReference("Places");
Toast.makeText(FirebaseSearch.this, "Started Search", Toast.LENGTH_LONG).show();
System.out.println("keyNameOfFarmacy"+keyNameOfFarmacy);
Query firebaseSearchQuery = searchforData.orderByChild(keyNameOfFarmacy).orderByChild("others").orderByChild("Nome").startAt(searchText).endAt(searchText + "\uf8ff");
FirebaseRecyclerAdapter<DataDetails, UsersViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<DataDetails, UsersViewHolder>(
DataDetails.class,
R.layout.list_layout,
UsersViewHolder.class,
firebaseSearchQuery
) {
@Override
protected void populateViewHolder(UsersViewHolder viewHolder, DataDetails model, int i) {
viewHolder.getDetails(model.getNome(), model.getPrice());
viewHolder.setDetails(model.getNome(), model.getPrice());
}
};
mResultList.setAdapter(firebaseRecyclerAdapter);
}
我对这部分代码有疑问,因为:orderByChild只能使用一次。
任何人都可以告诉我如何获取数据,我在过去的2 3 h中迷失了寻找方法,但没有找到任何东西。先感谢您。
答案 0 :(得分:1)
更改此:
Query firebaseSearchQuery = searchforData.orderByChild(keyNameOfFarmacy).orderByChild("others").orderByChild("Nome").startAt(searchText).endAt(searchText + "\uf8ff");
对此:
Query firebaseSearchQuery = searchforData.child(keyNameOfFarmacy).child("others").orderByChild("Nome").startAt(searchText).endAt(searchText + "\uf8ff");
您已经可以访问others
和key
,因此只需使用child
和orderByChild
即可Nome
。