gpt4 book ai didi

java - viewpager2 中的无限滚动

转载 作者:行者123 更新时间:2023-12-03 23:12:00 34 4
gpt4 key购买 nike

我们如何在 ViewPager2 中实现无限滚动

因为没有OnPageChangeListener()在这个寻呼机中。
但是有setPageTransformer()每当我们更改页面时都会收到回调的监听器。

所以viewpager2问题的任何解决方案

注:我正在为 viewpager2 使用 recyclerview 适配器

最佳答案

对于无限滚动,您不必自定义 View 寻呼机。 viewPager 适配器中的技巧。您可以在 getCount 覆盖方法中返回 Int.MAX 值。在 instanceiteItem 覆盖函数中可以使用 item_position % item_size 获取实际的项目位置。代码示例如下。

class AdsSliderAdapter(
private val bannerImageList: MutableList<SliderImagesItem>,
private val callback: SliderItemClickListener) :PagerAdapter() {

private var mContext: Context? = null
override fun instantiateItem(container: ViewGroup, position: Int): Any {
mContext = container.context

val view = LayoutInflater.from(container.context)
.inflate(R.layout.item_ad_slider, container, false)

val adImage: AppCompatImageView = view.ivAd
mContext?.let {
GlideApp.with(it).load(bannerImageList[position % bannerImageList.size].imageUrl)
.into(adImage)
}
val viewPager = container as ViewPager
viewPager.addView(view, 0)

view.cardView.onClick { callback.onSliderImageClick(bannerImageList[position % bannerImageList.size]) }
return view
}

override fun isViewFromObject(view: View, `object`: Any): Boolean {
return view === `object`
}

override fun getCount(): Int {
return if (bannerImageList.size > 0) {
Int.MAX_VALUE
} else {
0
}
}

override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
val viewPager = container as ViewPager
val view = `object` as View
viewPager.removeView(view)
}

interface SliderItemClickListener {
fun onSliderImageClick(item: SliderImagesItem)
}

}

关于java - viewpager2 中的无限滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59768351/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com