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
package com.sinata.xqmuse.ui.home
 
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.utils.myToast
import com.sinata.xqmuse.R
import com.sinata.xqmuse.dialog.ChooseStarDialog
import com.sinata.xqmuse.network.HttpManager
import com.sinata.xqmuse.network.entity.LuckItem
import com.sinata.xqmuse.network.requestByF
import com.sinata.xqmuse.ui.home.adapter.LuckAdapter
import com.sinata.xqmuse.utils.Const
import com.sinata.xqmuse.utils.event.EmptyEvent
import com.sinata.xqmuse.utils.extention.clickDelay
import com.sinata.xqmuse.utils.extention.getStarIcon
import com.sinata.xqmuse.utils.interfaces.StringCallback
import kotlinx.android.synthetic.main.fragment_star.*
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
 
class StarFragment : BaseFragment() {
    override fun contentViewId() = R.layout.fragment_star
 
    private val type by lazy { arguments?.getString("type")?:"" }
    private val luckName = arrayListOf("综合指数", "爱情指数", "幸运数字", "健康指数", "财运指数", "工作指数", "速配星座", "幸运色")
    private val lucks = arrayListOf<LuckItem>()
    private val adapter = LuckAdapter(lucks)
 
    override fun onFirstVisibleToUser() {
        EventBus.getDefault().register(this)
        if (type == TYPE_TODAY||type == TYPE_TOMORROW){
            rv_luck.layoutManager = GridLayoutManager(requireContext(), 4)
            rv_luck.adapter = adapter
        }else{
            rv_luck.gone()
            tv_1.text = "运势详情"
        }
 
        tv_change.clickDelay {
            ChooseStarDialog.show(
                childFragmentManager,
                (requireActivity() as StarActivity).star,
                object : StringCallback {
                    override fun onResult(rst: String) {
                        (requireActivity() as StarActivity).star = rst
                        EventBus.getDefault().post(EmptyEvent(Const.EventCode.CHANGE_STAR))
                        HttpManager.changeConstellation(rst).requestByF(this@StarFragment) { _, _ ->
                            EventBus.getDefault().post(EmptyEvent(Const.EventCode.USER_INFO_CHANGED))
                        }
                    }
                })
        }
        getData()
    }
 
 
 
    private fun getData(){
        val star = (requireActivity() as StarActivity).star
        tv_change.text = star
        tv_change.setCompoundDrawablesRelativeWithIntrinsicBounds(star.getStarIcon(), 0, R.mipmap.ic_switch, 0)
        HttpManager.constellation(star, type).requestByF(this, success = { _, data ->
            tv_time.text = "日期:${data?.datetime}"
            tv_tip.text = data?.summary
 
            when (type){
                TYPE_TODAY, TYPE_TOMORROW->{
                    lucks.clear()
                    lucks.addAll((0 until 8).map {
                        LuckItem(luckName[it], data?.getValue(luckName[it]) ?: "")
                    })
                    adapter.notifyDataSetChanged()
                }
                else->{
 
                }
            }
 
        })
    }
 
    @Subscribe
    fun refresh(e:EmptyEvent){
        if (e.code == Const.EventCode.CHANGE_STAR)
            getData()
    }
 
    override fun onDestroy() {
        super.onDestroy()
        EventBus.getDefault().unregister(this)
    }
 
    companion object{
        const val TYPE_TODAY = "today"
        const val TYPE_TOMORROW = "tomorrow"
        const val TYPE_WEEK = "week"
        const val TYPE_MONTH = "month"
        const val TYPE_YEAR = "year"
        fun newInstance(type:String):StarFragment{
            val starFragment = StarFragment()
            starFragment.arguments = bundleOf("type" to type)
            return starFragment
        }
    }
}