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

问题描述 投票:0回答:1
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的最佳方法是什么?

android firebase arraylist firebase-storage
1个回答
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) {

    }
});

如果您还想获取applesamsung之类的密钥,则必须使用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) {

    }
});
© www.soinside.com 2019 - 2024. All rights reserved.