1+ package com.cxz.wanandroid.ui.fragment
2+
3+ import android.support.design.widget.TabLayout
4+ import com.cxz.wanandroid.R
5+ import com.cxz.wanandroid.adapter.WeChatPagerAdapter
6+ import com.cxz.wanandroid.base.BaseFragment
7+ import com.cxz.wanandroid.event.ColorEvent
8+ import com.cxz.wanandroid.mvp.contract.WeChatContract
9+ import com.cxz.wanandroid.mvp.model.bean.WXChapterBean
10+ import com.cxz.wanandroid.mvp.presenter.WeChatPresenter
11+ import com.cxz.wanandroid.utils.SettingUtil
12+ import kotlinx.android.synthetic.main.fragment_wechat.*
13+ import org.greenrobot.eventbus.Subscribe
14+ import org.greenrobot.eventbus.ThreadMode
15+
16+ /* *
17+ * @author chenxz
18+ * @date 2018/10/28
19+ * @desc
20+ */
21+ class WeChatFragment : BaseFragment (), WeChatContract.View {
22+
23+ companion object {
24+ fun getInstance (): WeChatFragment = WeChatFragment ()
25+ }
26+
27+ /* *
28+ * Presenter
29+ */
30+ private val mPresenter: WeChatPresenter by lazy {
31+ WeChatPresenter ()
32+ }
33+
34+ /* *
35+ * datas
36+ */
37+ private val datas = mutableListOf<WXChapterBean >()
38+
39+ /* *
40+ * ViewPagerAdapter
41+ */
42+ private val viewPagerAdapter: WeChatPagerAdapter by lazy {
43+ WeChatPagerAdapter (datas, childFragmentManager)
44+ }
45+
46+ override fun showLoading () {
47+ }
48+
49+ override fun hideLoading () {
50+ }
51+
52+ override fun showError (errorMsg : String ) {
53+ }
54+
55+ override fun attachLayoutRes (): Int = R .layout.fragment_wechat
56+
57+ override fun initView () {
58+ mPresenter.attachView(this )
59+
60+ viewPager.run {
61+ addOnPageChangeListener(TabLayout .TabLayoutOnPageChangeListener (tabLayout))
62+ }
63+
64+ tabLayout.run {
65+ setupWithViewPager(viewPager)
66+ // TabLayoutHelper.setUpIndicatorWidth(tabLayout)
67+ addOnTabSelectedListener(TabLayout .ViewPagerOnTabSelectedListener (viewPager))
68+ addOnTabSelectedListener(onTabSelectedListener)
69+ }
70+
71+ refreshColor(ColorEvent (true ))
72+
73+ }
74+
75+ override fun lazyLoad () {
76+ mPresenter.getWXChapters()
77+ }
78+
79+ @Subscribe(threadMode = ThreadMode .MAIN )
80+ fun refreshColor (event : ColorEvent ) {
81+ if (event.isRefresh) {
82+ if (! SettingUtil .getIsNightMode()) {
83+ tabLayout.setBackgroundColor(SettingUtil .getColor())
84+ }
85+ }
86+ }
87+
88+ override fun doReConnected () {
89+ if (datas.size == 0 ) {
90+ super .doReConnected()
91+ }
92+ }
93+
94+ override fun showWXChapters (chapters : MutableList <WXChapterBean >) {
95+
96+ chapters.let {
97+ datas.addAll(it)
98+ viewPager.run {
99+ adapter = viewPagerAdapter
100+ offscreenPageLimit = datas.size
101+ }
102+ }
103+
104+ }
105+
106+ /* *
107+ * onTabSelectedListener
108+ */
109+ private val onTabSelectedListener = object : TabLayout .OnTabSelectedListener {
110+ override fun onTabReselected (tab : TabLayout .Tab ? ) {
111+ }
112+
113+ override fun onTabUnselected (tab : TabLayout .Tab ? ) {
114+ }
115+
116+ override fun onTabSelected (tab : TabLayout .Tab ? ) {
117+ // 默认切换的时候,会有一个过渡动画,设为false后,取消动画,直接显示
118+ tab?.let {
119+ viewPager.setCurrentItem(it.position, false )
120+ }
121+ }
122+ }
123+
124+ override fun scrollToTop () {
125+ if (viewPagerAdapter.count == 0 ) {
126+ return
127+ }
128+ val fragment: ProjectListFragment = viewPagerAdapter.getItem(viewPager.currentItem) as ProjectListFragment
129+ fragment.scrollToTop()
130+ }
131+
132+ }
0 commit comments