2017-07-31 51 views
0

我想从firebase实时数据库中获取Item对象。每件事情都很好,但图像列表返回null。android.return从firebase列表对象

+1

我认为你必须仔细观察你的pojo类和json的firebase,可能这些项目不是很好解析 –

+1

不要发布一个链接到代码的图像。相反,请编辑您的问题以包含[重现问题所需的最低代码](http://stackoverflow.com/help/mcve)(请阅读链接,它提供了有关如何创建此类MCVE的信息,为什么它很有用, 以及更多)。 –

+0

iam beginer in stackoverflow –

回答

0

假设你有一些类项目与您现在使用这个类火力映射和上传以下数据成员

public class Item { 

    @SerializedName("name") 
    @Expose 
    private String name; 
    @SerializedName("images") 
    @Expose 
    private List<String> images; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public List<String> getImages() { 
     return images; 
    } 

    public void setImages(List<String> images) { 
     this.images = images; 
    } 

} 

。 让我们上传我们的Item类成员作为键值对。

mDatabase.push().setValue(getItemReady(), new DatabaseReference.CompletionListener() { 
    @Override 
    public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) { 
     if (databaseError == null) { 
      makeToast("One entry created successfully"); 
     } else { 
      //data creation failed, handle it here 
     } 
    } 
}); 

private Item getItemReady() { 
    List<String> images = new ArrayList<>(); 
    images.add("https://i.stack.imgur.com/TWkC2.png"); 
    Item mItem = new Item(); 
    mItem.setName("mutee aljabri"); 
    mItem.setImages(images); 
    return mItem; 
} 

上面的调用将POJO映射到json,就像下面的firebase一样。

{ 
    "name":"mutee aljabri", 
    "images" 
    "0":"https://i.stack.imgur.com/TWkC2.png" 
} 

如果这是真的,那么我们正在做的是正确的,所以现在让解析回在客户端上的请求。

private void getDataFirebase() { 
    //get fresh data here 
    ValueEventListener listener = new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      Log.d(TAG, "load items : onDataChanged() " + dataSnapshot.getKey()); 
      for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 
       //here it will parse every Item you have pushed to firebase 
       Item item = snapshot.getValue(Item.class); 
      } 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      // Getting data failed, log a message 
      Log.d(TAG, "load events : onCancelled", databaseError.toException()); 
     } 
    }; 
    mDatabase.addListenerForSingleValueEvent(listener); 
} 

我希望你做得非常接近我在做什么。

+0

它需要在POJO类中添加注释(Item) –

+0

我想在FireBaseRecyclerViewAdpter中使用图像来显示项目 –

+0

否,注释在大小写中不需要的火力基地。这些是为了防止我们使用GSON来解析json。上面只是一种将数据存储在firebase中的方法,它可以是任何图像或字符串。 –