![](/img/trans.png)
[英]How to get data from Firebase Realtime Database and show it in a spinner?
[英]How I can get data of next child and show it in list view from firebase realtime database
我正在开发一个音频圣训,现在我想将第一个键显示为Ramadan
, Zakat
等类别,并且在每个类别中,都会有很多音频圣训的标题和音频URL。
这是数据库结构图:
public void readHadiths(final DataStatus dataStatus){
mDbReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
hadiths.clear();
List<String> keys = new ArrayList<>();
for (DataSnapshot keyNode : dataSnapshot.getChildren()){
keys.add(keyNode.getKey());
String title = keyNode.child("title").getValue(String.class);
Hadith Hadits = keyNode.getValue(Hadith.class);
hadiths.add(Hadits);
Log.d("TAG", title);
}
dataStatus.DataLoaded(hadiths,keys);
}
您无法查询实际的数据库结构以一次性获得所有Hadith
对象,因为这些对象中的每个对象都存在于单独的节点中。 为了解决这个问题,建议您通过减少这样的节点数来更改数据库结构:
Firebase-root
|
--- Hadiths
|
--- hadith1
| |
| --- title: "This is hadith1 title"
| |
| --- url: "eg.example.com"
| |
| --- type: "Ramadan"
|
--- hadith2
|
--- title: "This is hadith2 title"
|
--- url: "eg.example.com"
|
--- type: "Zakat"
现在,要查询所有斋月的圣训,请使用以下查询:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("Hadiths").orderByChild("type").equalTo("Ramadan");
query.addListenerForSingleValueEvent(/* ... */);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.