美文网首页
Kotlin+RX实现ViewPager无限轮播

Kotlin+RX实现ViewPager无限轮播

作者: xuezhi123go | 来源:发表于2018-09-10 10:02 被阅读0次
    要是有什么不妥之处还请各位大佬指正。

    参考文章: 超简单,RxJava+ViewPager实现无限轮播广告条

    首先在pagerAdaptergetCount()方法中设置countInt.MAX_VALUE,这样无论怎么滑都不会滑到结尾了。

    override fun getCount(): Int {
                    return Int.MAX_VALUE
                }
    

    然后在instantiateItem()方法里设置新的newPosition = position % mData!!.size,使数据的position和我们刚设置的MAX_VALUEposition对应。

    override fun instantiateItem(container: ViewGroup, position: Int): Any {
                    val view = View.inflate(context, R.layout.item_vp_home_head, null)
    
                    var newPosition = position % mData!!.size
    
                    view.tv_homeheadtitle.text = "标题" + newPosition
                    container.addView(view)
                
                    return view
                }
    

    这样PagerAdapter就设置完了,为了实现左右都能无限滑动,让初始显示的currentItem=1000,这样向左滑1000条才会滑倒第一条的位置,用户就不会发现左边的第一条了。

    itemView.id_viewpager.currentItem = 1000
    

    这样无限滑动实现了,下面用RX设置自动轮播。

    Observable.interval(3, 3, TimeUnit.SECONDS).bindToLifecycle(itemView)
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe { next ->       
                      itemView.id_viewpager.setCurrentItem(itemView.id_viewpager.currentItem+1,true)
                    }
    

    这样设置后就能每隔3秒自动向后滑动一页了。
    用上面的方法之前要在dependencies()里加上下面的代码。

    dependencies {
    implementation 'com.trello.rxlifecycle2:rxlifecycle-kotlin:2.2.2'
    }
    

    ok,大功告成。


    要是有什么不妥之处还请各位大佬指正。

    相关文章

      网友评论

          本文标题:Kotlin+RX实现ViewPager无限轮播

          本文链接:https://www.haomeiwen.com/subject/jbijgftx.html