package com.fuban.driver.ui.main.add_order
|
|
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import cn.sinata.xldutils.utils.clickDelay
|
import cn.sinata.xldutils.utils.gone
|
import cn.sinata.xldutils.utils.visible
|
import com.fuban.driver.R
|
import com.fuban.driver.base.BaseEvent
|
import com.fuban.driver.base.MyBaseActivity
|
import com.fuban.driver.bean.SitePointBean
|
import com.fuban.driver.netUtls.Api
|
import com.fuban.driver.netUtls.callNet
|
import com.fuban.driver.netUtls.getMapByAny
|
import com.fuban.driver.ui.adapter.CitySelectAdapter
|
import com.fuban.driver.ui.adapter.LetterAdapter
|
import com.fuban.driver.utils.pinyin.FirstCharUtil
|
import kotlinx.android.synthetic.main.activity_select_city_start.*
|
import java.util.*
|
import kotlin.collections.LinkedHashSet
|
|
|
/**
|
* @ClassName SelectCityStartActivity
|
* @Description 选择终点城市 选择起点城市 这个页面UI上的按字母筛选 改为纯文字无背景 UI理解错误
|
* @Author Administrator
|
* @Date 2020/10/7 15:27
|
* @Version 1.0
|
*/
|
class SelectCityStartActivity : MyBaseActivity() {
|
|
val startSiteId by lazy {
|
intent.getStringExtra("startCityId") //1 选择起点城市 2 选择终点城市
|
}
|
|
var letterAdapter = LetterAdapter()
|
|
var cityAdapter = CitySelectAdapter()
|
|
override fun setContentView() {
|
setContentView(R.layout.activity_select_city_start)
|
}
|
|
override fun initView() {
|
if (startSiteId.isNullOrEmpty()) {
|
setTitleText("选择起点城市")
|
} else {
|
setTitleText("选择终点城市")
|
}
|
}
|
|
override fun setOnclick() {
|
initCityList()
|
tv_cancel.clickDelay {
|
onBackPressed()
|
}
|
}
|
|
private fun initCityList() {
|
recycler_view_city.layoutManager = LinearLayoutManager(this)
|
recycler_view_city.adapter = cityAdapter
|
selectLetterData("全部")
|
}
|
|
|
private fun selectLetterData(letter: String) {
|
callCity() {
|
cityAdapter.data.clear()
|
var list = mutableListOf<SitePointBean.DataBean>()
|
if (letter != "全部") {
|
for (item in it.data) {
|
var startLetter = FirstCharUtil.first(item.name)
|
if (startLetter == letter) {
|
list.add(item)
|
}
|
}
|
cityAdapter.data.addAll(list)
|
} else {
|
cityAdapter.data.addAll(it.data)
|
}
|
if (cityAdapter.data.isEmpty()){
|
tv_hint.visible()
|
recycler_view_city.gone()
|
}else{
|
tv_hint.gone()
|
recycler_view_city.visible()
|
}
|
cityAdapter.notifyDataSetChanged()
|
}
|
}
|
|
private fun callCity(function: (SitePointBean) -> Unit) {
|
var map = getMapByAny()
|
if (!startSiteId.isNullOrEmpty()){
|
map["startSiteId"] = startSiteId
|
}
|
callNet(Api.queryOpenCity, map) {
|
var bean = gson.fromJson<SitePointBean>(it, SitePointBean::class.java)
|
initLetter(bean.data)
|
|
function(bean)
|
}
|
}
|
|
enum class SortBy {
|
NAME, AGE
|
}
|
|
private fun initLetter(datas: MutableList<SitePointBean.DataBean>) {
|
recycler_view_letter.layoutManager = GridLayoutManager(this, 6)
|
var listStr = mutableListOf<String>()
|
for (item in datas){
|
listStr.add(FirstCharUtil.first(item.name))
|
}
|
var set = LinkedHashSet(listStr)
|
listStr = ArrayList(set)
|
listStr.sort()
|
datas.sortWith(MyComparator())
|
datas.reverse()
|
listStr.add(0,"全部")
|
letterAdapter.data.clear()
|
letterAdapter.data.addAll(listStr)
|
recycler_view_letter.adapter = letterAdapter
|
letterAdapter.setOnItemClickListener { view, position ->
|
letterAdapter.selectPosition = position
|
letterAdapter.notifyDataSetChanged()
|
selectLetterData(listStr[position])
|
}
|
}
|
|
class MyComparator : Comparator<SitePointBean.DataBean> {
|
override fun compare(
|
o1: SitePointBean.DataBean?,
|
o2: SitePointBean.DataBean?
|
): Int {
|
if (FirstCharUtil.first(o1!!.name) > FirstCharUtil.first(o2!!.name)) {
|
return -1
|
} else {
|
return 1
|
}
|
}
|
}
|
|
|
|
override fun onEventMainThread(event: BaseEvent?) {
|
super.onEventMainThread(event)
|
when(event!!.code){
|
BaseEvent.SELECT_POINT_SITE -> {
|
onBackPressed()
|
}
|
}
|
}
|
}
|