我正在尝试从firebase实时数据库中获取Item对象。每个工作正常但图像列表返回null。
答案 0 :(得分: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;
}
}
现在您正在使用此类进行firebase映射和上传。 让我们将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);
}
我希望你能够接近我正在做的事情。