常见的APP 应用 都能见到的功能模块 ,翻页答题 ,手指轻轻滑动,下一题。
这次用到的语言是kotlin 。讲道理 IOS-swift , Android-kotlin 夫妻配啊
滑动翻页效果 用到的控件是viewPager ,viewpager滑动翻页不要太容易
简单来说 fragmentA中装入viewpager ,viewpager adapter设置继承FragmentPagerAdapter。 这样就可以在adpter 的getItem方法中将一个新的fragmentB 装进去
这样的层次结构感觉就有三层了 。
viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { } override fun onPageSelected(position: Int) { } override fun onPageScrollStateChanged(state: Int) { } }
这个方法可以监听当前翻到第几页了根据position 设置当前页面显示第几题 。就像这样: 1/30
如果想在当前页面放一个按钮 点击按钮了就能自动翻页也是可以的
btn.setOnClickListener { log("下一题") if (mCurrentViewId == 0) { mCurrentViewId = 1 } if (mCurrentViewId != (list as ArrayList<String>).size) { viewPager.setCurrentItem(mCurrentViewId, true) } else { } }
viewPager 一设置当前item 它就翻页了 。由于一来是在外层的fragmentA 请求网络获取题目信息列表什么的 。而题目显示答案啥的 都是在viewPager 对应adapter 装的fragmentB里面。所以 一开始就要把list 传进去 。viewpagerAdapter 则要把position 传到里面的fragmentB,不然咋知道要显示哪道题呢。最里面的fragmentB 要显示题目名。选项,解析啥的 textview listview imageview 什么的搞起listview 装题目选项 。又要用到adapter,在adapter 里面点击选择题目 。记录题目被选中,还要把答案层层回调出来。哎呀 妈个鸡 ,赶脚写复杂了 。设置一个集合chooseItemSet,点击选项某一个,先在集合中找一波,没有 +进去,有了 -去了。简单的逻辑实现选题过程
在选项的adapter 里面 搞个interface。listener.answer_result(chooseItemSet)外层实现这个接口 回调出来速度不慢.层层回调出来 就到fragmentA 里面了 。这里面就知道咱选了哪道题对应选项chooseItemSet。
在fragmentA中判断当前如果是最后一页 mCurrentViewId == (list as ArrayList<String>).size说明这个时候下一题按钮功能就变成提交了。调用网络把答案传给服务端简单来说就是viewpager里面装一个fragment 。每翻一页fragment 里面的参数就根据position 从list(这个list 肯定是一个ArrayList(DataBean) 的格式呀呀呀呀啊呀)中取出来。然后把这些数据信息展示出来。OVER!! 收工!!