2017-03-05 96 views
0

这是我的数据库看起来如何访问子节点

mainAlbum 
    Album1 
     id: "" 
     image_name: "" 
     image_path: "" 
     pic1 
      id: "" 
      image_name: "" 
      image_path: "" 
     pic2 
      id: "" 
      image_name: "" 
      image_path: "" 

我能Album1下访问IMAGE_NAME和IMAGE_PATH,但我不知道如何访问图一和图二。有超过1张专辑,我可以访问它们,每张专辑都有很多图片

这是我用来访问数据库的代码。

private void getData(){ 
     firebaseDatabaseInstance = FirebaseDatabase.getInstance(); 

     // get reference to 'users' node 
     booksInstance = firebaseDatabaseInstance.getReference("mainAlbum"); 

     booksInstance.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       setData(dataSnapshot); 
      } 

      @Override 
      public void onCancelled(DatabaseError error) { 
       // Failed to read value 
       Log.w(TAG, "Failed to read value.", error.toException()); 
      } 
     }); 

    } 

    List<List<String>> booksInfo; 
    List<String> temp; 
    private void setData(DataSnapshot dataSnapshot){ 
     booksInfo = new ArrayList<>(); 
     for (DataSnapshot alert: dataSnapshot.getChildren()) { 
      temp = new ArrayList<>(); 
      Log.d("image_name", (String) alert.child("image_name").getValue()); 
      Log.d("id", (String) alert.child("id").getValue()); 
      Log.d("image_path", (String) alert.child("image_path").getValue()); 
      temp.add((String) alert.child("image_name").getValue()); 
      temp.add((String) alert.child("id").getValue()); 
      temp.add((String) alert.child("image_path").getValue()); 
      booksInfo.add(temp); 
     } 

     if(booksInfo.size() > 0){ 
      setGridView(); 
     }else{ 
      Toast.makeText(this, "No data Found.", Toast.LENGTH_SHORT).show(); 
     } 
    } 
+0

更好地访问图片你归你专辑 – uguboz

+0

你可以使用一个简单的while循环,像'while(alert.child(“pic”+ n).exists())'并且n从1开始,每次递增 – Linxy

+0

@Linxy我在哪里放这行代码以上访问图片? – Khallad

回答

0

通过查看您的firebase数据库结构,从相册访问图片只能通过单独访问每张图片来完成。

如果您要访问的图片作为一个列表,你应该让你的结构是怎样的

mainAlbum 
Album1 
    id: "" 
    image_name: "" 
    image_path: "" 
    pics 
     pic1 
      id: "" 
      image_name: "" 
      image_path: "" 
     pic2 
      id: "" 
      image_name: "" 
      image_path: "" 

,然后你可以通过获取“图片”子

+0

,然后只是使用这一行代码来访问它booksInstance = firebaseDatabaseInstance.getReference(“mainAlbum”)。child(“pics”); ? – Khallad

+0

我能够在iOS上使用上面提供的结构访问它,所以我确信有一种方法可以在android上执行它 – Khallad