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
120
121
122
123
124
125
126
127
128
129
130
package com.sinata.xqmuse.ui.mine
 
import android.app.Activity
import android.content.Intent
import androidx.core.os.bundleOf
import androidx.recyclerview.widget.GridLayoutManager
import cn.sinata.xldutils.fragment.BaseFragment
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.CourseBean
import com.sinata.xqmuse.network.requestByF
import com.sinata.xqmuse.ui.course.BuyCourseActivity
import com.sinata.xqmuse.ui.course.adapter.CourseGridAdapter
import com.sinata.xqmuse.ui.home.BuyVoiceActivity
import kotlinx.android.synthetic.main.layout_common_list.*
import org.jetbrains.anko.support.v4.startActivityForResult
 
class MineGridFragment : BaseFragment() {
    override fun contentViewId() = R.layout.layout_common_list
 
    private val type by lazy { arguments?.getInt("type",0)?:0 }
    private var pType = 0
    private var state = 0
    private var page = 1
    private val list = arrayListOf<CourseBean>()
    private val adapter = CourseGridAdapter(list)
 
    override fun onFirstVisibleToUser() {
        pType = when(type){
            COLLECTED_COURSE, COLLECTED_SAVE->WatchHisActivity.COLLECTED
            HAS_BUY_VOICE, HAS_BUY_COURSE->{
                adapter.isOrder = true
                WatchHisActivity.HAS_BUY
            }
            else->WatchHisActivity.WATCH_HIS
        }
        state = when(type){
            COLLECTED_COURSE, WATCH_HIS_COURSE , HAS_BUY_COURSE-> 2
            COLLECTED_SAVE, WATCH_HIS_SAVE , HAS_BUY_VOICE->1
            else->0
        }
        rv_list.layoutManager = GridLayoutManager(requireContext(),2)
        rv_list.adapter = adapter
        refreshLayout.setOnLoadMoreListener {
            page++
            getData()
        }
        refreshLayout.setOnRefreshListener {
            page = 1
            getData()
        }
        refreshLayout.autoRefresh()
        adapter.setOnItemClickListener { _, position ->
            val courseBean = list[position]
            if (adapter.isOrder&&courseBean.paymentStatus == 1) {
                    HttpManager.payOrder(courseBean.id).requestByF(this){_,data->
                        if (type == HAS_BUY_COURSE)
                            startActivityForResult<BuyCourseActivity>(1,"isSend" to false,"fromDetail" to false,"data" to data)
                        else
                            startActivityForResult<BuyVoiceActivity>(1,"fromDetail" to false,"data" to data)
                    }
            }else when(type){
                    WATCH_HIS_SAVE, COLLECTED_SAVE, HAS_BUY_VOICE->{
                        showDialog()
                        HttpManager.getMeditationDetails(courseBean.businessId?:"").requestByF(this,success = {_,data->
                            dismissDialog()
                            data?.goDetail(requireContext())
                        }){_,_->
                            dismissDialog()
                        }
                    }
                    WATCH_HIS_COURSE, COLLECTED_COURSE, HAS_BUY_COURSE->{
                        showDialog()
                        HttpManager.getPayCourseInfoById(courseBean.businessId?:"").requestByF(this,success = { _, data->
                            dismissDialog()
                            data?.goDetail(requireContext())
                        }){_,_->
                            dismissDialog()
                        }
                    }
                }
        }
    }
 
    private fun getData(){
        HttpManager.lookHistory(pType,page,state).requestByF(this,success = { _, data->
            if (page == 1)
                list.clear()
            list.addAll(data?: arrayListOf())
            adapter.notifyDataSetChanged()
            tv_empty.gone()
            if (list.isEmpty()){
                refreshLayout.finishRefreshWithNoMoreData()
                tv_empty.visible()
            } 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)
        }
    }
 
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode == Activity.RESULT_OK)
            refreshLayout.autoRefresh()
    }
 
    companion object{
        const val WATCH_HIS_SAVE = 1 //疗愈观看历史
        const val WATCH_HIS_COURSE = 2 //课程观看历史
        const val COLLECTED_SAVE = 3 //收藏疗愈
        const val COLLECTED_COURSE = 4 //收藏课程
        const val HAS_BUY_COURSE = 5 //已购课程
        const val HAS_BUY_VOICE = 6 //已购音频
        fun newInstance(type:Int):MineGridFragment{
            val mineGridFragment = MineGridFragment()
            mineGridFragment.arguments = bundleOf("type" to type)
            return mineGridFragment
        }
    }
}