美文网首页
XDslPagerAdapter 快速实现 ViewPager

XDslPagerAdapter 快速实现 ViewPager

作者: 连续三届村草 | 来源:发表于2018-05-14 15:03 被阅读16次

Android 开发要写一大堆 Adapter,使用 Kotlin 的话可以通过 Dsl 来完成。
ViewPager 还没有看到满意的,于是撸了一个针对 ViewPager + DataBinding 的 DslAdapter。

https://github.com/xiejinpeng007/XDslPagerAdapter

一个用于app首次安装时的教程的 sample code:

       binding.guideViewPager.run {
            xDslPagerAdapter {

                item(R.layout.pager_guide) {
                    model(BR.model to Page(0, R.drawable.img_tutorial01, "下一页"))
                    handle(BR.click to { _: Page -> currentItem = 1 })
                    action { binding ->
                        (binding as? PagerGuideBinding)?.run {
                            (nextPageButton.layoutParams as? ViewGroup.MarginLayoutParams)?.run {
                                marginStart = dp2px(30F)
                                marginEnd = dp2px(30F)
                            }
                        }
                    }
                }

                item(R.layout.pager_guide) {
                    model(BR.model to Page(1, R.drawable.img_tutorial02, "下一页"))
                    handle(BR.click to { _: Page -> currentItem = 2 })
                }

                item(R.layout.pager_guide) {
                    model(BR.model to Page(2, R.drawable.img_tutorial03, "下一页"))
                    handle(BR.click to { _: Page -> currentItem = 3 })
                }

                item(R.layout.pager_guide) {
                    model(BR.model to Page(3, R.drawable.img_tutorial04, "开始使用"))
                    handle(BR.click to { _: Page ->
                        SharedPrefModel.isFistTime = false
                        startActivity(Intent(context, MainActivity::class.java))
                        finish()
                    })
                }
            }
        }

简单来说,通过 ViewPager.xDslPagerAdapter 这个拓展方法开始构建 Adapter ,item 中 model 绑定 vm ,handle 绑定响应动作,有更细的处理在 action 中完成。

相关文章

网友评论

      本文标题:XDslPagerAdapter 快速实现 ViewPager

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