lmw
2025-04-24 718f31c92e2029d05260810435a2c70cef6e6ce5
app/src/main/java/com/sinata/xqmuse/ui/course/MyCourseActivity.kt
@@ -1,94 +1,94 @@
package com.sinata.xqmuse.ui.course
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.GridLayoutManager
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.visible
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.course.adapter.CourseGridAdapter
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 myList = arrayListOf<CourseBean>()
    private val myAdapter = CourseGridAdapter(myList)
    private val freeList = arrayListOf<CourseBean>()
    private val freeAdapter = CourseGridAdapter(freeList)
    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()
        myAdapter.setOnItemClickListener { _, position ->
            showDialog()
            HttpManager.getPayCourseInfoById(myList[position].id).request(this,success = { _, data->
                dismissDialog()
                data?.goDetail(this)
            }){_,_->
                dismissDialog()
            }
        }
        freeAdapter.setOnItemClickListener { _, position ->
            showDialog()
            HttpManager.getPayCourseInfoById(freeList[position].id).request(this,success = { _, data->
                dismissDialog()
                data?.goDetail(this)
            }){_,_->
                dismissDialog()
            }
        }
        tv_ask.setOnClickListener {
            startActivity<HelpCenterActivity>()
        }
        tv_action.setOnClickListener {
            EventBus.getDefault().post(EmptyEvent(Const.EventCode.SWITCH_COURSE))
            finish()
        }
    }
    override fun initView() {
        EventBus.getDefault().register(this)
        rv_filter.layoutManager = LinearLayoutManager(this)
        rv_filter.adapter = filterAdapter
        rv_course.layoutManager = LinearLayoutManager(this)
        rv_free.layoutManager = GridLayoutManager(this,2)
        rv_free.adapter = freeAdapter
        rv_my.layoutManager = GridLayoutManager(this,2)
        rv_my.adapter = myAdapter
        myAdapter.isOrder = true
        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
        refreshLayout.setEnableLoadMore(false)
        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() }
    }
    @Subscribe
    fun refresh(e: EmptyEvent){
        if (e.code == Const.EventCode.REFRESH_MY_COURSE){
            refreshLayout.resetNoMoreData()
            page = 1
            getData()
        HttpManager.studyPage().request(this,success = {_,data->
            refreshLayout.finishRefresh(true)
            myList.clear()
            myList.addAll(data?.courseList?: arrayListOf())
            freeList.clear()
            freeList.addAll(data?.freeCourseList?: arrayListOf())
            myAdapter.notifyDataSetChanged()
            freeAdapter.notifyDataSetChanged()
            if (myList.isNullOrEmpty()){
                tv_empty.visible()
                tv_action.visible()
            }else{
                tv_empty.gone()
                tv_action.gone()
            }
            if (freeList.isNullOrEmpty()){
                tv_empty2.visible()
            }else{
                tv_empty2.gone()
            }
        }){_,_->
            refreshLayout.finishRefresh(false)
        }
    }
    override fun onDestroy() {
        super.onDestroy()
        EventBus.getDefault().unregister(this)
    }
}