lmw
2024-05-27 c00669a852702e1aa1326872bb916f9a079b57e2
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
package com.future.driver.ui.main
 
import android.app.Activity
import android.view.inputmethod.EditorInfo
import androidx.recyclerview.widget.LinearLayoutManager
import com.future.driver.R
import com.future.driver.base.MyBaseActivity
import com.future.driver.bean.OpenCity
import com.future.driver.bean.OpenCityBean
import com.future.driver.netUtls.Api
import com.future.driver.netUtls.callNet
import com.future.driver.netUtls.getMapByAny
import com.future.driver.utils.MyUtils
import com.google.gson.Gson
import kotlinx.android.synthetic.main.activity_choose_city.*
import kotlinx.android.synthetic.main.activity_choose_city.tv_cancel
import kotlinx.android.synthetic.main.activity_search_site.*
import kotlinx.android.synthetic.main.driver_two.*
 
class ChooseCityActivity:MyBaseActivity() {
    override fun setContentView() {
        setContentView(R.layout.activity_choose_city)
    }
 
    private val datasAll = arrayListOf<OpenCity>() //所有数据源
    private val datas = arrayListOf<OpenCity>() //展示数据源(搜索后过滤)
    private val adapter = OpenCityAdapter(datas)
 
    private val index = arrayListOf(
        "A", "B", "C", "D", "E", "F", "G", "H", "I",
        "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
    )
 
    override fun initView() {
        setTitleText("切换城市")
        val currentCityName = intent.getStringExtra("currentCityName")
        tv_current.text = String.format("当前选择:%s",currentCityName)
        lv_city.layoutManager = LinearLayoutManager(this)
        lv_city.adapter = adapter
        side_bar.setOnSelectIndexItemListener { index ->
            (0 until datas.size).forEach {
                if (index == datas[it].getInitial()) {
                    val manager = lv_city.layoutManager as LinearLayoutManager
                    manager.scrollToPositionWithOffset(it, 0)
                    return@setOnSelectIndexItemListener
                }
            }
        }
 
        callNet(Api.queryOpenCityUser, getMapByAny()){
            val data = Gson().fromJson(it, OpenCityBean::class.java).data
            data?.let {
                datas.clear()
                if (it.isNotEmpty()) {
                    index.forEach { index->
                        it.filter { it.name.isNotEmpty() }.forEach {
                            if (index == it.getInitial()){
                                datasAll.add(it)
                            }
                        }
                    }
                }
                datas.addAll(datasAll)
                adapter.notifyDataSetChanged()
            }
        }
    }
 
    override fun setOnclick() {
        tv_cancel.setOnClickListener {
            finish()
        }
 
        et_search.setOnEditorActionListener { v, actionId, event ->
            if (actionId == EditorInfo.IME_ACTION_SEARCH){
                MyUtils.getInstans().hideKeyboard(et_search)
                val key = et_search.text.toString()
                datas.clear()
                datasAll.forEach {
                    if (it.name.contains(key)){
                        datas.add(it)
                    }
                }
                adapter.notifyDataSetChanged()
            }
            return@setOnEditorActionListener false
        }
 
        adapter.setOnItemClickListener { _, position ->
            setResult(Activity.RESULT_OK,intent.putExtra("name" , datas[position].name).putExtra("lat" , datas[position].lat).putExtra("lon" , datas[position].lon))
            finish()
        }
    }
}