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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package com.sinata.xqmuse.ui.discovery
 
import androidx.recyclerview.widget.LinearLayoutManager
import cn.sinata.xldutils.activity.BaseActivity
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.dialog.AddMomentPop
import com.sinata.xqmuse.network.HttpManager
import com.sinata.xqmuse.network.entity.Dynamic
import com.sinata.xqmuse.network.requestByF
import com.sinata.xqmuse.ui.discovery.adapter.DynamicAdapter
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.interfaces.StringCallback
import kotlinx.android.synthetic.main.fragment_discovery.*
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.jetbrains.anko.support.v4.dip
import org.jetbrains.anko.support.v4.startActivity
 
 
class DiscoveryFragment : BaseFragment() {
    override fun contentViewId() = R.layout.fragment_discovery
 
    private val dyns = arrayListOf<Dynamic>()
    private val adapter = DynamicAdapter(dyns)
    private var page = 1
    var search: String? = null //搜索
 
 
    override fun onFirstVisibleToUser() {
        EventBus.getDefault().register(this)
        rv_act.layoutManager = LinearLayoutManager(requireContext())
        rv_act.adapter = adapter
        iv_msg.setOnClickListener {
            startActivity<MsgActivity>()
        }
        iv_add.setOnClickListener {
            val pop = AddMomentPop(requireContext())
            pop.setCallback(object : StringCallback {
                override fun onResult(rst: String) {
                    startActivity<PublishActivity>("isVideo" to (rst == "video"))
                }
            })
            pop.showAsDropDown(iv_add,dip(-120),-iv_add.measuredHeight-dip(20))
        }
        adapter.setOnItemClickListener { view, position ->
            startActivity<DynamicActivity>("id" to dyns[position].id)
        }
        refreshLayout.setOnRefreshListener {
            val s = et_search.text.toString()
            search = if (s.isNullOrEmpty()) null else s
            page = 1
            getData()
        }
        refreshLayout.setOnLoadMoreListener {
            page++
            getData()
        }
        tv_search.clickDelay {
            val s = et_search.text.toString()
            search = if (s.isNullOrEmpty()) null else s
            (requireActivity() as BaseActivity).hideInputMethod()
            refreshLayout.resetNoMoreData()
            page = 1
            getData()
        }
        getUnread()
        page = 1
        getData()
    }
 
    fun getUnread(){
        HttpManager.messageCount().requestByF(this){_,data->
            if (data?:0>99){
                tv_unread.visible()
                tv_unread.text = "99+"
            }else if (data?:0>0){
                tv_unread.visible()
                tv_unread.text = data.toString()
            }else
                tv_unread.gone()
        }
    }
 
    private fun getData(){
        HttpManager.findList(page,search).requestByF(this,success = {_,data->
            if (page == 1)
                dyns.clear()
            dyns.addAll(data?: arrayListOf())
            adapter.notifyDataSetChanged()
            if (dyns.isEmpty())
                refreshLayout.finishRefreshWithNoMoreData()
            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)
        }
    }
 
    @Subscribe
    fun refresh(e:EmptyEvent){
        if (e.code == Const.EventCode.REFRESH_DISCOVERY)
            refreshLayout.autoRefresh()
    }
 
    override fun onDestroy() {
        super.onDestroy()
        EventBus.getDefault().unregister(this)
    }
}