我已将图片网址存储在Firebase数据库,因为我一直在这里阅读,这是可行的方法。
现在我需要从List中检索 5 Picture Objects 并将它们放入一个数组中供以后使用。
所以我在我的Reference上添加一个SingleValueEvent,它位于 UserId Node 上,并获取一个DataSnapshot对象,我检查它是否为空。
问题是,即使我在我的数据库中只有一个包含5个图片的列表,在迭代DataSnapshot对象时,它将19个图片对象添加到数组... < / p>
02-14 15:13:45.375 21952-21952/com.example I/EditProfileFragment:Picture Array : 19
我在这里缺少什么?
Json看起来像这样:
PicturesUrls {
UserID {
randomID{
pictureName : "Main Picture"
pictureUrl : "URL"
}
randomId
pictureName : "Second Picture"
pictureUrl : "URL"
randomId {
pictureName : "Third Picture"
pictureUrl : "URL"
}
}
}
这是我的代码:
ArrayList<Object> mPicturesArray = new ArrayList<>();
....
....
mPicturesUrlRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot != null) {
addPicturesToArray(dataSnapshot);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
private void addPicturesToArray(DataSnapshot dataSnapshot) {
for (DataSnapshot child : dataSnapshot.getChildren()) {
Picture picture = child.getValue(Picture.class);
mPicturesArray.add(picture);
Log.i(LOG_TAG, "One Picture added : " + picture.getPictureName());
}
Log.i(LOG_TAG, "Picture Array : " + mPicturesArray.size());
}
答案 0 :(得分:0)
... Hummm
好的,我已经将 ArrayList 更改为 HashMap ,现在正在按预期工作。 不知道为什么,但......