请不要将其标记为“重复”,只需附加任何其他问题即可结束问题。我的上下文与建议的答案不同。我需要 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)
我不知道我的整个代码是否是一个错误。
我的数据库如下。