lmw
2024-09-25 92778728b83ce1a34ba21bcdb061afdeca16cce5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package com.sinata.xqmuse.ui.course
 
import androidx.recyclerview.widget.LinearLayoutManager
import cn.sinata.xldutils.activity.BaseActivity
import cn.sinata.xldutils.fragment.BaseFragment
import com.sinata.xqmuse.R
import com.sinata.xqmuse.network.HttpManager
import com.sinata.xqmuse.network.entity.*
import com.sinata.xqmuse.network.requestByF
import com.sinata.xqmuse.ui.course.adapter.*
import com.sinata.xqmuse.ui.home.adapter.CourseAdapter
import com.sinata.xqmuse.ui.home.adapter.HomeBannerAdapter
import com.sinata.xqmuse.utils.Const
import com.sinata.xqmuse.utils.event.EmptyEvent
import com.sinata.xqmuse.utils.extention.clickDelay
import com.youth.banner.indicator.CircleIndicator
import kotlinx.android.synthetic.main.fragment_course.*
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.jetbrains.anko.support.v4.startActivity
 
class CourseFragment : BaseFragment() {
    override fun contentViewId() = R.layout.fragment_course
 
    private val bannerImg = arrayListOf<Banner>()
//    private val bannerAdapter by lazy {
//        HomeBannerAdapter(bannerImg, requireContext())
//    }
 
    private val filterList = arrayListOf<Filter>()
    private val filterAdapter = FilterAdapter(filterList)
 
    private var page = 1
    var search: String? = null //搜索
 
    private val course = arrayListOf<Course>()
    private val courseAdapter = CourseAdapter(course)
 
    override fun onFirstVisibleToUser() {
        EventBus.getDefault().register(this)
//        banner.adapter = bannerAdapter
        banner.indicator = CircleIndicator(requireContext())
        rv_filter.layoutManager = LinearLayoutManager(requireContext())
        rv_filter.adapter = filterAdapter
 
        rv_course.layoutManager = LinearLayoutManager(requireContext())
        rv_course.adapter = courseAdapter
        courseAdapter.setOnItemClickListener { view, position ->
            startActivity<CourseDetailActivity>("id" to course[position].id)
        }
 
        tv_my_course.setOnClickListener {
            startActivity<MyCourseActivity>()
        }
 
        tv_search.clickDelay {
            val s = et_search.text.toString()
            search = if (s.isNullOrEmpty()) null else s
            (requireActivity() as BaseActivity).hideInputMethod()
            refreshLayout.autoRefresh()
        }
 
        refreshLayout.setOnRefreshListener {
            val s = et_search.text.toString()
            search = if (s.isNullOrEmpty()) null else s
            page = 1
            getData()
        }
        refreshLayout.setOnLoadMoreListener {
            page++
            getData()
        }
        banner.setOnBannerListener { data, position ->
            val banner = data as Banner
            banner.jumpPage(requireContext())
        }
        getImg()
        getFilter()
        page = 1
        getData()
    }
 
    private fun getFilter() {
        HttpManager.getList().requestByF(this){_, data->
            filterList.clear()
            filterList.add(Filter("类型:",data?.fitnessType?: arrayListOf()))
            filterList.add(Filter("部位:",data?.fitnessPosition?: arrayListOf()))
            val diff = arrayListOf<FilterItem>()
            diff.add(FilterItem(1,"H1"))
            diff.add(FilterItem(2,"H2"))
            diff.add(FilterItem(3,"H3"))
            diff.add(FilterItem(4,"H4"))
            diff.add(FilterItem(5,"H5"))
            filterList.add(Filter("难度:",diff))
            val times = arrayListOf<FilterItem>()
            times.add(FilterItem(1,"小于10分钟"))
            times.add(FilterItem(2,"10-20分钟"))
            times.add(FilterItem(3,"大于20分钟"))
            filterList.add(Filter("时长:",times))
            filterAdapter.notifyDataSetChanged()
        }
    }
 
 
    private fun getData() {
        val diff = filterList.filter { it.name == "难度:" }.firstOrNull()?.list?.filter { it.checked }?.joinToString (","){ it.id.toString() }
        val position = filterList.filter { it.name == "部位:" }.firstOrNull()?.list?.filter { it.checked }?.joinToString (","){ it.name }
        val times = filterList.filter { it.name == "时长:" }.firstOrNull()?.list?.filter { it.checked }?.joinToString (","){ it.id.toString() }
        val types = filterList.filter { it.name == "类型:" }.firstOrNull()?.list?.filter { it.checked }?.joinToString (","){ it.id.toString() }
        HttpManager.queryCourseList(page,if (diff.isNullOrEmpty()) null else diff,
            if (position.isNullOrEmpty()) null else position,if (times.isNullOrEmpty()) null else times,
            if (types.isNullOrEmpty()) null else types,search).requestByF(this,success = {_,data->
            if (page == 1)
                course.clear()
            course.addAll(data?: arrayListOf())
            courseAdapter.notifyDataSetChanged()
            if (course.isEmpty())
                refreshLayout.finishRefreshWithNoMoreData()
            else if (data.isNullOrEmpty())
                refreshLayout.finishLoadMoreWithNoMoreData()
            else if (page == 1)
                refreshLayout.finishRefresh()
            else
                refreshLayout.finishLoadMore()
        }){_,_->
            if (page == 1)
                refreshLayout.finishRefresh(false)
            else
                refreshLayout.finishLoadMore(false)
        }
    }
 
    private fun getImg(){
        HttpManager.queryBanner().requestByF(this){ _, data->
            bannerImg.clear()
            bannerImg.addAll(data?: arrayListOf())
//            bannerAdapter.notifyDataSetChanged()
            banner.currentItem = 1
        }
    }
 
    @Subscribe
    fun refresh(e:EmptyEvent){
        if (e.code == Const.EventCode.REFRESH_COURSE){
            refreshLayout.resetNoMoreData()
            page = 1
            getData()
        }
    }
 
    override fun onDestroy() {
        super.onDestroy()
        EventBus.getDefault().unregister(this)
    }
 
}