lmw
2025-04-24 718f31c92e2029d05260810435a2c70cef6e6ce5
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
package com.sinata.xqmuse.ui.course
 
import androidx.recyclerview.widget.GridLayoutManager
import cn.sinata.xldutils.fragment.BaseFragment
import com.sinata.xqmuse.R
import com.sinata.xqmuse.network.HttpManager
import com.sinata.xqmuse.network.entity.Banner
import com.sinata.xqmuse.network.entity.CourseBean
import com.sinata.xqmuse.network.entity.CourseType
import com.sinata.xqmuse.network.requestByF
import com.sinata.xqmuse.ui.course.adapter.CourseBannerAdapter
import com.sinata.xqmuse.ui.course.adapter.CourseGridAdapter
import com.sinata.xqmuse.ui.course.adapter.CourseTypeAdapter
import com.youth.banner.indicator.CircleIndicator
import kotlinx.android.synthetic.main.fragment_push.*
import org.jetbrains.anko.support.v4.startActivity
 
class PushCourseFragment : BaseFragment() {
    override fun contentViewId() = R.layout.fragment_push
 
    private val bannerImg = arrayListOf<Banner>()
    private val bannerAdapter by lazy {
        CourseBannerAdapter(bannerImg, requireContext())
    }
    private val topMenu = arrayListOf<CourseType>()
    private val topMenuAdapter = CourseTypeAdapter(topMenu)
 
    private val list = arrayListOf<CourseBean>()
    private val adapter = CourseGridAdapter(list)
 
    private var page = 1
 
    override fun onFirstVisibleToUser() {
        banner.adapter = bannerAdapter
        banner.indicator = CircleIndicator(requireContext())
        rv_menu.layoutManager = GridLayoutManager(requireContext(),4)
        rv_menu.adapter = topMenuAdapter
        rv_course.layoutManager = GridLayoutManager(requireContext(),2)
        rv_course.adapter = adapter
        refreshLayout.setOnRefreshListener {
            page = 1
            getData()
        }
        refreshLayout.setOnLoadMoreListener {
            page++
            getData()
        }
        getBanner()
        getType()
        getData()
 
        topMenuAdapter.setOnItemClickListener { view, position ->
            startActivity<TypeCourserActivity>("types" to topMenu,"index" to position)
        }
        banner.setOnBannerListener { data, position ->
            val banner = bannerImg[position]
            jumpCourse(banner.courseId)
        }
        adapter.setOnItemClickListener { view, position ->
            jumpCourse(list[position].id)
        }
    }
 
    fun refresh(){
        getType()
        page = 1
        getData()
    }
 
    private fun jumpCourse(id:String){
        if (id.isNullOrEmpty())
            return
        showDialog()
        HttpManager.getPayCourseInfoById(id).requestByF(this,success = { _, data->
            dismissDialog()
            data?.goDetail(requireContext())
        }){_,_->
            dismissDialog()
        }
    }
 
    private fun getBanner(){
        HttpManager.queryBanner().requestByF(this){_,data->
            bannerImg.addAll(data?: arrayListOf())
            bannerAdapter.notifyDataSetChanged()
            banner.currentItem = 1
        }
    }
 
    private fun getType(){
        HttpManager.getCourseCategoryList().requestByF(this){_,data->
            topMenu.clear()
            topMenu.addAll(data?: arrayListOf())
            topMenuAdapter.notifyDataSetChanged()
        }
    }
 
    private fun getData(){
        HttpManager.queryCourseList(page).requestByF(this,success = {_,data->
            if (page == 1)
                list.clear()
            list.addAll(data?.list?: arrayListOf())
            adapter.notifyDataSetChanged()
            if (list.isEmpty()){
                refreshLayout.finishRefreshWithNoMoreData()
            } else if (data?.list.isNullOrEmpty())
                refreshLayout.finishLoadMoreWithNoMoreData()
            else if (page == 1)
                refreshLayout.finishRefresh()
            else
                refreshLayout.finishLoadMore()
        }){_,_->
            if (page == 1)
                refreshLayout.finishRefresh(false)
            else
                refreshLayout.finishLoadMore(false)
        }
    }
}