fix
lmw
2024-11-09 d1a9e3312387b6c47e6186af506787a8a66369d1
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
package com.sinata.xqmuse.ui.home
 
import androidx.recyclerview.widget.LinearLayoutManager
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.SPUtils
import com.sinata.xqmuse.R
import com.sinata.xqmuse.network.HttpManager
import com.sinata.xqmuse.network.request
import com.sinata.xqmuse.ui.TransparentStatusBarActivity
import com.sinata.xqmuse.ui.course.CourseSearchResultActivity
import com.sinata.xqmuse.ui.home.adapter.HotAdapter
import com.sinata.xqmuse.utils.Const
import kotlinx.android.synthetic.main.activity_search.*
import kotlinx.android.synthetic.main.item_hot.view.*
import kotlinx.android.synthetic.main.item_hot.view.tv_name
import kotlinx.android.synthetic.main.item_search_his.view.*
import org.jetbrains.anko.startActivity
import org.jetbrains.anko.toast
 
class SearchActivity:TransparentStatusBarActivity() {
    override fun setContentView() = R.layout.activity_search
    private val SPLIT = "%s"
    private val hisList = arrayListOf<String>()
    private val hotList = arrayListOf<String>()
    private val hotAdapter = HotAdapter(hotList)
    private val isCourse by lazy { intent.getBooleanExtra("isCourse",false) } //true:搜索课程
    private val hisKey by lazy { if (isCourse) Const.User.SEARCH_HIS_COURSE else Const.User.SEARCH_HIS_HOME }
    
    override fun initClick() {
        hotAdapter.setOnItemClickListener { view, position ->
            et_search.setText(hotList[position])
            et_search.setSelection(hotList[position].length)
            tv_search.callOnClick()
        }
 
        tv_search.setOnClickListener {
            val key = et_search.text.toString()
            if (key.isNullOrEmpty()){
                toast("请输入搜索内容")
            }else{
                if (hisList.contains(key))
                    hisList.remove(key)
                hisList.add(0,key)
                saveHis()
                if (isCourse)
                    startActivity<CourseSearchResultActivity>("key" to key)
                else
                    startActivity<SearchResultActivity>("key" to key)
            }
        }
    }
 
    override fun initView() {
        if (isCourse){
            rv_hot.gone()
            tv_2.gone()
            et_search.hint = "搜索你喜欢的课程~"
        }else{
            rv_hot.layoutManager = LinearLayoutManager(this)
            rv_hot.adapter = hotAdapter
            getHotWordList()
        }
        getHis()
    }
 
    private fun getHotWordList(){
        HttpManager.getHotWordList().request(this){_,data->
            hotList.clear()
            hotList.addAll(data?: arrayListOf())
            hotAdapter.notifyDataSetChanged()
        }
    }
 
    private fun getHis(){
        hisList.clear()
        fl_his.removeAllViews()
        val his = SPUtils.instance().getString(hisKey)
        hisList.addAll(his.split(SPLIT).filter { it.isNotEmpty() }.take(10))
        hisList.forEach {
            val inflate = layoutInflater.inflate(R.layout.item_search_his, fl_his, false)
            fl_his.addView(inflate)
            inflate.tv_name.text = it
            inflate.tv_name.setOnClickListener { _->
                et_search.setText(it)
                et_search.setSelection(it.length)
                tv_search.callOnClick()
            }
            inflate.iv_del.setOnClickListener { _->
                hisList.remove(it)
                saveHis()
            }
        }
    }
 
    private fun saveHis() {
        SPUtils.instance().put(hisKey,hisList.joinToString(SPLIT) { it }).apply()
        getHis()
    }
}