android 有没有办法在不使用Firestore的情况下直接在RecyclerView中显示Firebase存储?

jogvjijk  于 2023-03-16  发布在  Android
关注(0)|答案(2)|浏览(92)

因此,我目前使用FirestoreRecyclerAdapter通过Firestore数据库显示Firebase存储中的图像,即

Firebase Storage file url > Firestore database url > RecyclerView (FirestoreRecyclerAdapter)

这对于少量的图像来说是可以的。但是当处理每套150张图像时,这就开始变得麻烦了。
有没有更有效的方法来处理这个问题?比如looping遍历Firebase Storage中的所有图像,然后直接显示在RecyclerView上?
如果有教程的话,请告诉我,最好是Kotlin。我不是很喜欢文档。我知道我已经要求太多了。谢谢!

unftdfkk

unftdfkk1#

提高在RecyclerView中显示图像的效率的一种方法是使用一个处理图像加载和缓存的库。Glide和Picasso是两个常用的选项。这两个库都可以使用StorageReference对象直接从Firebase存储加载图像,并可以缓存图像以提高性能。
也许这样的代码会有用:

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
    val imageRef = getItem(position).imageRef // get the StorageReference for the image
    Glide.with(context)
        .load(imageRef)
        .into(holder.imageView)
}

但它需要一些设置,请在此答案中勾选:https://stackoverflow.com/a/48762436/7334951

6xfqseft

6xfqseft2#

从你的问题中我了解到,你已经在云存储中添加了一些图片,并在Firestore中添加了相应的URL。为了在RecyclerView中显示来自云存储的图片,你首先读取来自Firestore的URL。当你想存储正在使用的文件的详细信息时,这种做法很常见。但是,如果你只想显示来自存储的图片,不需要从Firestore读取URL。
有没有更有效的方法来处理这个问题?比如循环遍历Firebase存储中的所有图像,并将它们直接显示在RecyclerView上?
是的,有。您可以使用StorageReference#listAll(),它:
列出此StorageReference下的所有项目(文件)和前缀(文件夹)。
这意味着你可以调用上面的方法来列出存储桶中某个特定位置的所有文件。

相关问题