我有一个聊天应用程序与Firestore,我把发送的图像消息在一个ViewPager适配器。所以,我成功地查看了发送者和接收者之间的所有图像消息。但是,问题是,当点击聊天室中的任何图像,ViewPager开始在相同的位置[0]。
我想让适配器监听我对一个项目的点击并转到目标位置。这里是我的ViewPager适配器和一些代码示例。
class ImgViewPagerAdapter(val context: Context, private val imageList: ArrayList<ImageViewerData>)
: PagerAdapter(){
override fun getCount(): Int {
return imageList.size
}
override fun isViewFromObject(view: View, `object`: Any): Boolean {
return view === `object` as RelativeLayout
}
override fun instantiateItem(container: ViewGroup, position: Int): Any {
val mLayoutInflater =
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val itemView: View = mLayoutInflater.inflate(R.layout.img_viewer_item, container, false)
val imageView: ImageView = itemView.findViewById<View>(R.id.idIVImage) as ImageView
val currentImg = imageList[position]
Glide.with(context).load(currentImg.img).into(imageView)
Objects.requireNonNull(container).addView(itemView)
return itemView
}
override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
container.removeView(`object` as RelativeLayout)
}
}
firestore.collection("Chats").document(senderRoom).collection("messages")
.whereEqualTo("type", "photo").addSnapshotListener { value, _ ->
if (!value?.isEmpty!!) {
for (document in value.documents) {
val img = document.data?.get("message").toString()
val senderName = document.data?.get("senderName").toString()
imageList.add(ImageViewerData("", img, "", senderName))
viewPagerAdapter.notifyDataSetChanged()
}
}
}
我尝试在Firestore中为插入的图像放置一个增量无限方法,但它总是放置相同的id值(0)。如果可能或在Firestore中可用,如何为每个从0开始的图像放置一个整数值。
谢谢你...
1条答案
按热度按时间ktca8awb1#
您可以通过调用视图页导航的setCurrentItem来完成此操作:
快速提示:你最好使用ViewPager2,它会对你来说容易得多。