【问题标题】:How do i add multiple Images from my Firebase Database to my ArrayList如何将多个图像从我的 Firebase 数据库添加到我的 ArrayList
【发布时间】:2020-01-06 09:39:55
【问题描述】:
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”节点内

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

【问题讨论】:

  • 请添加更详细的数据库截图。
  • 上传了更详细的截图

标签: android firebase arraylist firebase-storage


【解决方案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) {

    }
});

【讨论】:

  • 我收到“不兼容的类型”错误:必需 - com.google.firebase.database.DataSnapshot。找到 - com.firebase.client.Datasnapshot
  • inside public void onDataChange
  • 我在帖子中提到您的ArrayList 应该是String 而不是Integercopy-paste我的解决方案并检查
  • 我发布了一个新问题来解释完整的问题。
  • 也就是说它不能解决你的问题,对吧?还是您面临另一个问题?
猜你喜欢
  • 1970-01-01
  • 2019-02-13
  • 1970-01-01
  • 1970-01-01
  • 2019-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多