[英]How to Access Many Nested Child Firebase Realtime database into RecyclerView?
[英]How to access data from firebase Realtime database child?
我的實時數據庫 json
"module1" : {
"Operating System" : {
"pdfName" : "pdf",
"pdfUrl" : "gs://knec-pastpapers.appspot.com/module1/OS/july2007.pdf"
}
}
我在訪問操作系統下的字段並在回收站視圖中顯示數據時遇到問題。 這是我的 model class
public class viewModel {
public String pdfName;
public String pdfUrl;
public viewModel() {
}
public viewModel(String pdfName, String pdfUrl) {
this.pdfName = pdfName;
this.pdfUrl=pdfUrl;
}
public String getPdfName() {
return pdfName;
}
public void setPdfName(String pdfName) {
this.pdfName = pdfName;
}
public String getPdfUrl() {
return pdfUrl;
}
public void setPdfUrl(String pdfUrl) {
this.pdfUrl = pdfUrl;
}
這就是我嘗試從實時數據庫訪問字段的方式
databaseReference= FirebaseDatabase.getInstance().getReference("ict").child("Operating System");
getImageData();
}
private void getImageData() {
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot di:dataSnapshot.getChildren()){
viewModel articleList=di.getValue(viewModel.class);
articleLists.add(articleList);
}
loadpdfsAdapter adapter=new loadpdfsAdapter(articleLists,getApplicationContext());
rv.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
運行代碼后,我的 recyclerview 是空的。 我的問題是如何訪問操作系統下的子節點?
僅當您獲得的快照具有多個viewModel
子節點時,才需要for (DataSnapshot di:dataSnapshot.getChildren()){
。 但是由於您從/ict/Operating System
加載數據,因此只有一個viewModel
子節點。
您要么必須刪除循環:
databaseReference= FirebaseDatabase.getInstance().getReference("ict").child("Operating System");
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
viewModel articleList=dataSnapshot.getValue(viewModel.class);
articleLists.add(articleList);
...
或者您可以加載所有ict
然后循環遍歷子節點:
databaseReference= FirebaseDatabase.getInstance().getReference("ict");
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot di:dataSnapshot.getChildren()){
viewModel articleList=di.getValue(viewModel.class);
articleLists.add(articleList);
}
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.