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
package com.sinata.xqmuse.ui.course
 
import androidx.recyclerview.widget.LinearLayoutManager
import com.sinata.xqmuse.R
import com.sinata.xqmuse.network.HttpManager
import com.sinata.xqmuse.network.entity.*
import com.sinata.xqmuse.network.request
import com.sinata.xqmuse.ui.TransparentStatusBarActivity
import com.sinata.xqmuse.ui.course.adapter.FilterAdapter
import com.sinata.xqmuse.ui.home.adapter.CourseAdapter
import com.sinata.xqmuse.utils.Const
import com.sinata.xqmuse.utils.event.EmptyEvent
import com.sinata.xqmuse.utils.extention.clickDelay
import kotlinx.android.synthetic.main.activity_my_course.*
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.jetbrains.anko.startActivity
 
class MyCourseActivity : TransparentStatusBarActivity() {
    override fun setContentView() = R.layout.activity_my_course
 
    private var page = 1
    var search:String? = null //搜索
    private val filterList = arrayListOf<Filter>()
    private val filterAdapter = FilterAdapter(filterList,true)
 
    private val course = arrayListOf<Course>()
    private val courseAdapter = CourseAdapter(course)
 
    override fun initClick() {
        tv_search.clickDelay {
            val s = et_search.text.toString()
            search = if (s.isNullOrEmpty()) null else s
            hideInputMethod()
            refreshLayout.resetNoMoreData()
            page = 1
            getData()
        }
 
        courseAdapter.setOnItemClickListener { view, position ->
            startActivity<CourseDetailActivity>("id" to course[position].id)
        }
    }
 
    override fun initView() {
        EventBus.getDefault().register(this)
        rv_filter.layoutManager = LinearLayoutManager(this)
        rv_filter.adapter = filterAdapter
        rv_course.layoutManager = LinearLayoutManager(this)
        rv_course.adapter = courseAdapter
 
        refreshLayout.setOnRefreshListener {
            val s = et_search.text.toString()
            search = if (s.isNullOrEmpty()) null else s
            page = 1
            getData()
        }
        refreshLayout.setOnLoadMoreListener {
            page++
            getData()
        }
        getFilter()
        page = 1
        getData()
 
    }
 
    private fun getFilter() {
        HttpManager.getList().request(this){_, data->
            filterList.clear()
            filterList.add(Filter("类型:",data?.fitnessType?: arrayListOf()))
            filterList.add(Filter("部位:",data?.fitnessPosition?: arrayListOf()))
            filterList.add(Filter("难度:",data?.difficulty?: arrayListOf()))
            filterList.add(Filter("时长:",data?.time?: arrayListOf()))
            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.myCourse(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).request(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)
        }
    }
 
    @Subscribe
    fun refresh(e: EmptyEvent){
        if (e.code == Const.EventCode.REFRESH_MY_COURSE){
            refreshLayout.resetNoMoreData()
            page = 1
            getData()
        }
    }
 
    override fun onDestroy() {
        super.onDestroy()
        EventBus.getDefault().unregister(this)
    }
 
}