罗明文
2024-06-19 481723ce3c05d74fec53b8567b9c79d77bdcc155
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.dollearn.student.ui.worldcup
 
import androidx.recyclerview.widget.LinearLayoutManager
import cn.sinata.xldutils.fragment.BaseFragment
import cn.sinata.xldutils.utils.myToast
import cn.sinata.xldutils.utils.showAllowingStateLoss
import com.dollearn.student.R
import com.dollearn.student.dialog.ChooseYearDialog
import com.dollearn.student.network.HttpManager
import com.dollearn.student.network.entity.WorldRank
import com.dollearn.student.network.requestByF
import com.dollearn.student.ui.worldcup.adapter.WorldRankAdapter
import com.dollearn.student.utils.Const
import com.dollearn.student.utils.event.EmptyEvent
import com.dollearn.student.utils.extention.clickDelay
import com.dollearn.student.utils.interfaces.StringCallback
import kotlinx.android.synthetic.main.fragment_world_rank.*
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
 
class WorldRankFragment:BaseFragment() {
    override fun contentViewId() = R.layout.fragment_world_rank
 
    private val list = arrayListOf<WorldRank>()
    private val adapter = WorldRankAdapter(list)
 
    private var sort = 2 //排序,1=场次,2=胜率
    private var year:Int? = null
 
    private val rb_city by lazy {
        (requireActivity() as MyWorldActivity).rbCity
    }
    private val rb_country by lazy {
        (requireActivity() as MyWorldActivity).rbCountry
    }
 
    override fun onFirstVisibleToUser() {
        EventBus.getDefault().register(this)
//        rb_city.text = (requireActivity() as MyWorldActivity).cityName
//        rb_city.isSelected = true
        rv_list.layoutManager = LinearLayoutManager(requireContext())
        rv_list.adapter = adapter
        refreshLayout.setOnRefreshListener {
            getData()
        }
        getData()
 
        tv_filter.setOnClickListener {
            if (refreshLayout.isRefreshing)
                myToast("等待刷新")
            else{
                sort = if (sort == 1) 2 else 1
                tv_filter.text = if (sort == 1) "按场次排名" else "按胜率排名"
                refreshLayout.autoRefresh()
            }
        }
 
        tv_year.clickDelay {
            val chooseYearDialog = ChooseYearDialog()
            chooseYearDialog.callback = object :StringCallback{
                override fun onResult(rst: String) {
                    tv_year.text = rst
                    if (rst == "全部")
                        year = null
                    else{
                        year = rst.substring(0,4).toInt()
                    }
                    refreshLayout.autoRefresh()
                }
            }
            chooseYearDialog.showAllowingStateLoss(childFragmentManager,"rankYear")
        }
 
        rb_city.setOnClickListener {
            if (refreshLayout.isRefreshing)
                myToast("等待刷新")
            else{
                rb_city.isSelected = true
                rb_country.isSelected = false
                refreshLayout.autoRefresh()
            }
        }
 
        rb_country.setOnClickListener {
            if (refreshLayout.isRefreshing)
                myToast("等待刷新")
            else{
                rb_city.isSelected = false
                rb_country.isSelected = true
                refreshLayout.autoRefresh()
            }
        }
    }
 
    private fun getData() {
        val myWorldActivity = requireActivity() as MyWorldActivity
        val radius = if (rb_city.isSelected) 2 else 1
        HttpManager.getWorldCupRank(myWorldActivity.stu?.id?:"",myWorldActivity.stu?.isStudent?:0,radius,sort,year)
            .requestByF(this, success = { _, data ->
                list.clear()
                list.addAll(data?: arrayListOf())
                adapter.notifyDataSetChanged()
                refreshLayout.finishRefresh()
                myWorldActivity.mineRank = data?.filter { it.oneself == 1 }?.firstOrNull()
                myWorldActivity.showMineRank()
            }) { _, _ ->
                refreshLayout.finishRefresh(false)
            }
    }
 
    @Subscribe
    fun refreshList(e: EmptyEvent){
    }
 
    override fun onDestroy() {
        super.onDestroy()
        EventBus.getDefault().unregister(this)
    }
}