如何在 Kotlin 的 recyclerView 中的图像滑块中显示来自 Firebase 存储的图像?

时间:2021-07-20 05:50:48

标签: android kotlin google-cloud-firestore firebase-storage

请不要将其标记为“重复”,只需附加任何其他问题即可结束问题。我的上下文与建议的答案不同。我需要 Kotlin 的答案,我想在 recyclerView 上的图像滑块中显示图像。感谢您的理解,而不是关闭它。至少愿意帮助的其他人可以帮助我解决这个问题。我已经尝试了很多,一个多星期,在 YouTube 上参考了很多教程和视频,之后我才在 Stackoverflow 上问了这个问题。

我想在我的应用中添加图片轮播/图片幻灯片,并且我已经尝试了一个多星期。

我总是无法获取图像数组(幻灯片模型)。每次我检查数组的大小时,我发现它为零。我知道这是因为从 Firestore 获取详细信息需要时间,我不知道如何处理它。 我浏览了许多教程,包括 Image Slide 上的 YouTube 视频,但它们的场景与我的不同。我的 imageslider 中有 recyclerView,我的图像在 Firebase 存储中,链接在 Firestore 中,我使用的是 Kotlin。我设法在 ImageView 中显示图像,获取其他详细信息并将它们显示在 recyclerView 中。当图像在可绘制对象中时,我还可以在 `imageSlider 中显示图像。

我尝试使用以下图片滑块。

implementation 'com.github.denzcoskun:ImageSlideshow:0.1.0'

我尝试了很多不同的方法,但没有什么真正有意义,这就是为什么我没有在这里添加我的代码。预先感谢您的帮助。

编辑:

我的 getImagesForSlider() 中有函数 DashboardFragment.kt,将从 DashboardItemsListAdapter.kt

调用
class DashboardFragment : BaseFragment() {

    val remoteImages = ArrayList<SlideModel>()

    private lateinit var binding: FragmentDashboardBinding

   fun getImagesForSlider(productId: String): ArrayList<SlideModel> {

        Log.d("Tag", "Called getImagesForSlider function")
        Log.d("Tag", "product id is $productId")

        val mFireStore = FirebaseFirestore.getInstance()
        mFireStore.collection("products")
            .document(productId)
            .get()
            .addOnSuccessListener { document ->

                val numOfImages= document.getLong("image_count")?.toInt()
                Log.d("Tag", "Number of images is $numOfImages")

                when {
                    numOfImages == 1 -> {

                        remoteImages.add(
                            SlideModel(
                                document.getString("image"),
                                document.getString("title"),
                                ScaleTypes.FIT
                            )
                        )
                    }
                    numOfImages == 2 -> {
                        
                        remoteImages.add(
                            SlideModel(
                                document.getString("image1"),
                                document.getString("title"),
                                ScaleTypes.FIT
                            )
                        )

                        remoteImages.add(
                            SlideModel(
                                document.getString("image2"),
                                document.getString("title"),
                                ScaleTypes.FIT
                            )
                        )
                    }
                    numOfImages == 3 -> {

                        remoteImages.add(
                            SlideModel(
                                document.getString("image1"),
                                document.getString("title"),
                                ScaleTypes.FIT
                            )
                        )

                        remoteImages.add(
                            SlideModel(
                                document.getString("image2"),
                                document.getString("title"),
                                ScaleTypes.FIT
                            )
                        )

                        remoteImages.add(
                            SlideModel(
                                document.getString("image3"),
                                document.getString("title"),
                                ScaleTypes.FIT
                            )
                        )
                    }
                    numOfImages == 4 -> {
                       
                        remoteImages.add(
                            SlideModel(
                                document.getString("image1"),
                                document.getString("title"),
                                ScaleTypes.FIT
                            )
                        )

                        remoteImages.add(
                            SlideModel(
                                document.getString("image2"),
                                document.getString("title"),
                                ScaleTypes.FIT
                            )
                        )

                        remoteImages.add(
                            SlideModel(
                                document.getString("image3"),
                                document.getString("title"),
                                ScaleTypes.FIT
                            )
                        )

                        remoteImages.add(
                            SlideModel(
                                document.getString("image4"),
                                document.getString("title"),
                                ScaleTypes.FIT
                            )
                        )
                       
                    }
                    numOfImages == 5 -> {
                        remoteImages.add(
                            SlideModel(
                                document.getString("image1"),
                                document.getString("title"),
                                ScaleTypes.FIT
                            )
                        )

                        remoteImages.add(
                            SlideModel(
                                document.getString("image2"),
                                document.getString("title"),
                                ScaleTypes.FIT
                            )
                        )

                        remoteImages.add(
                            SlideModel(
                                document.getString("image3"),
                                document.getString("title"),
                                ScaleTypes.FIT
                            )
                        )

                        remoteImages.add(
                            SlideModel(
                                document.getString("image4"),
                                document.getString("title"),
                                ScaleTypes.FIT
                            )
                        )

                        remoteImages.add(
                            SlideModel(
                                document.getString("image5"),
                                document.getString("title"),
                                ScaleTypes.FIT
                            )
                        )
                    }
                    else -> {
                        Log.d("Tag", "There are no images")
                    }
                }

            }
       
        return remoteImages
    }
}

以下是我的 DashboardItemsListAdapter.kt 部分,上面的函数将被调用。

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
            val model = list[position]
    
            if (holder is MyViewHolder) {
    
                val remoteImages =DashboardFragment().getImagesForSlider(model.product_id)
holder.itemView.image_slider.setImageList(remoteImages,ScaleTypes.FIT)

我不知道我的整个代码是否是一个错误。

我的数据库如下。

enter image description here

0 个答案:

没有答案