package com.fuban.user.ui.crosscity
|
|
import android.app.Activity
|
import android.content.Intent
|
import android.widget.CheckedTextView
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import cn.sinata.xldutils.visible
|
import com.fuban.user.R
|
import com.fuban.user.network.HttpManager
|
import com.fuban.user.network.entity.City
|
import com.fuban.user.network.entity.Site
|
import com.fuban.user.network.request
|
import com.fuban.user.ui.TransparentStatusBarActivity
|
import com.fuban.user.ui.crosscity.adapter.CitySiteAdapter
|
import kotlinx.android.synthetic.main.activity_choose_city_2.*
|
import org.jetbrains.anko.sdk27.coroutines.onClick
|
|
class ChooseCityActivity : TransparentStatusBarActivity() {
|
override fun setContentView() = R.layout.activity_choose_city_2
|
|
private val startId by lazy {//起点站点id
|
intent.getIntExtra("startId", 0)
|
}
|
private val letters = arrayListOf("全部") //字母索引
|
private val allData = arrayListOf<City>() //全部数据源
|
private val datas = arrayListOf<City>() //展示数据源
|
private var letterIndex = 0 //默认选中全部
|
|
private val adapter = CitySiteAdapter(datas, object : CitySiteAdapter.OnSiteClick {
|
override fun onSiteClick(site: Site,city: String) {
|
val intent = Intent()
|
setResult(
|
Activity.RESULT_OK,
|
intent.putExtra("id", site.id).putExtra("name", site.name).putExtra("city",city)
|
)
|
finish()
|
}
|
})
|
|
override fun initClick() {
|
tv_cancel.onClick {
|
finish()
|
}
|
}
|
|
override fun initView() {
|
title = if (startId == 0) "选择起点城市" else "选择终点城市"
|
lv_city.layoutManager = LinearLayoutManager(this)
|
lv_city.adapter = adapter
|
getData()
|
}
|
|
private fun getData() {
|
HttpManager.querySite(if (startId == 0) null else startId).request(this) { _, data ->
|
data?.apply {
|
if (isEmpty())
|
tv_empty.visible()
|
|
sortBy {
|
it.getInitial()
|
}
|
|
forEach {
|
val letter = it.getInitial()
|
if (letter !in letters)
|
letters.add(letter)
|
}
|
letters.forEachIndexed { index, it ->
|
val view = layoutInflater.inflate(R.layout.item_letter, null) as CheckedTextView
|
view.text = it
|
view.isChecked = index == 0
|
|
view.onClick {
|
if (index != letterIndex) {
|
view.isChecked = true
|
(fl_letter.getChildAt(letterIndex) as CheckedTextView).isChecked = false
|
letterIndex = index
|
datas.clear()
|
if (letterIndex == 0) {
|
datas.addAll(allData)
|
} else { //过滤数据
|
datas.addAll(allData.filter {
|
it.getInitial() == letters[letterIndex]
|
})
|
}
|
adapter.notifyDataSetChanged()
|
}
|
}
|
|
fl_letter.addView(view)
|
}
|
allData.addAll(this)
|
datas.addAll(this)
|
adapter.notifyDataSetChanged()
|
}
|
}
|
}
|
}
|