【问题标题】:Loading images from Firestore into a RecyclerView when there are multiple image types当有多种图像类型时,将图像从 Firestore 加载到 RecyclerView
【发布时间】:2020-03-10 14:38:06
【问题描述】:

我有一个使用 GridLayoutManager 的 RecyclerView,每个单元由一个 ImageView 组成。我想用来填充它的数据以 .png 和 .jpeg 图像存储在我的 Firestore 存储中,每个图像的命名为 icon#.pngicon#.jpeg 其中 # 是相应单元格的位置。我的问题是,当我尝试使用您在下面看到的方式将每个图像加载到相应单元格的 imageView 中时,我收到一条错误消息,因为我无法检索每个图像,因为有些图像具有 .png 扩展名,而另一些具有 .png 扩展名。 jpeg 一。我的理解是我需要将文件扩展名传递给storageReference.child() 方法,然后才能从Firestore 加载任何图像,对吗?那么我怎样才能在这里实现我的目标呢?

onBindViewHolder():

@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {

    storageReference.child("Icons/icon"+position+".png").getDownloadUrl()
            .addOnSuccessListener(new OnSuccessListener<Uri>() {
                @Override
                public void onSuccess(Uri uri) {
                    GlideApp.with(mContext).load(uri).into(holder.iconImgView);
                    Log.d("Adapter", "Image loaded successfully");
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.d("Adapter", "ERROR DOWNLOADING IMAGE");
                }
            });
}

【问题讨论】:

    标签: android android-recyclerview google-cloud-firestore


    【解决方案1】:

    不是最聪明的方法,但更简单的方法是在onFailure 获取*.png 的方法中为*.jpeg 运行相同的获取。并且只有在处理错误之后。

    这是为了以防你在 Firestore 中没有类似“exist(name)”的方法(只是我不熟悉)

    【讨论】:

    • 我已经想到了,但我担心即使一次获取失败(而另一次成功),它们都会计入谷歌设置的读取限制,从而将我的读取量减半
    猜你喜欢
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 2021-09-06
    • 2021-02-28
    • 2021-10-10
    • 2020-03-31
    • 2020-01-09
    • 1970-01-01
    相关资源
    最近更新 更多