将Firebase的对象列表从DataSnapshot添加到Array

时间:2017-02-14 02:05:52

标签: android arraylist firebase firebase-realtime-database

我已将图片网址存储在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());
}

1 个答案:

答案 0 :(得分:0)

... Hummm

好的,我已经将 ArrayList 更改为 HashMap ,现在正在按预期工作。 不知道为什么,但......