如何将Firebase数据库中的多个图像添加到ArrayList

时间:2020-01-06 09:39:55

标签: android firebase arraylist firebase-storage

public class getFirebase extends AppCompatActivity {

    DatabaseReference dbRef;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_get_firebase);

        dbRef = FirebaseDatabase.getInstance().getReference().child("theimage");

        final List<Integer> images = new ArrayList<>();

        dbRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull com.google.firebase.database.DataSnapshot dataSnapshot) {

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        })

    }
}

我已将图像上传到Firebase存储,然后将图像链接复制到我的数据库子级“ theimage”。请参考上传的图片。

在“ theimage”节点内放置图​​像存储链接 enter image description here

您认为将所有图像从Firebase数据库获取到ArrayList的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您必须遍历DataSnapshot才能将所有图像放入ArrayList中。除此之外,您的ArrayList应该是String类型。检查以下内容:

final List<String> images = new ArrayList<>();

dbRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

        for(DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
            images.add(childSnapshot.getValue(String.class));
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
});

如果您还想获取 apple samsung 之类的密钥,则必须使用Map而不是ArrayList。检查以下内容:

final Map<String, String> images = new HashMap<>();

dbRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

        for(DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
            images.put(childSnapshot.getKey(), childSnapshot.getValue(String.class));
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
});