package com.kuanzhai.user.ui.menu
|
|
import android.util.Log
|
import android.view.animation.AnimationUtils
|
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import cn.sinata.xldutils.clickDelay
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.utils.myToast
|
import cn.sinata.xldutils.view.SwipeRefreshRecyclerLayout
|
import cn.sinata.xldutils.visible
|
import com.kuanzhai.user.R
|
import com.kuanzhai.user.network.HttpManager
|
import com.kuanzhai.user.network.entity.Brand
|
import com.kuanzhai.user.network.entity.City
|
import com.kuanzhai.user.network.entity.SaleBean
|
import com.kuanzhai.user.network.request
|
import com.kuanzhai.user.ui.TransparentStatusBarActivity
|
import com.kuanzhai.user.ui.charter.adapter.StringAdapter
|
import com.kuanzhai.user.ui.menu.adapter.FilterStringAdapter
|
import com.kuanzhai.user.ui.menu.adapter.FilterGridAdapter
|
import com.kuanzhai.user.ui.menu.adapter.SaleAdapter
|
import kotlinx.android.synthetic.main.activity_buy_car.*
|
import org.jetbrains.anko.startActivity
|
|
class BuyCarActivity : TransparentStatusBarActivity() {
|
override fun setContentView() = R.layout.activity_buy_car
|
|
private val list = arrayListOf<SaleBean>()
|
private val adapter = SaleAdapter(list)
|
private var page = 1
|
|
private val brands = arrayListOf<Brand>()
|
private var brandAdapter:StringAdapter? = null
|
|
private val prices = arrayListOf("价格不限","4万元以内","4-6万元","6-8万元","8万元以上")
|
private val priceAdapter = FilterGridAdapter(prices)
|
|
private val provinces = arrayListOf<City>()
|
private val cities = arrayListOf<City>()
|
private val cityStrings = arrayListOf<String>()
|
private var provinceAdapter:FilterStringAdapter? = null
|
private val cityAdapter = FilterStringAdapter(cityStrings)
|
|
private val source = arrayListOf("不限","个人","平台")
|
private val sourceAdapter = FilterGridAdapter(source)
|
private val year = arrayListOf("不限","1年以内","1-3年","3-5年","5-10年","10年以上")
|
private val yearAdapter = FilterGridAdapter(year)
|
private val mile = arrayListOf("不限","1万公里以下","1-3万公里","3-5万公里","5-8万公里","8-12万公里","12万公里以上")//todo 考虑公里换成km
|
private val mileAdapter = FilterGridAdapter(mile)
|
private val pai = arrayListOf("不限","1.0L以下","1.0-1.6L","1.6-2.0L","2.0-2.5L","2.5L-3.0L","3.0L-4.0L","4.0L以上")
|
private val paiAdapter = FilterGridAdapter(pai)
|
private val change = arrayListOf("不限","手动","自动")
|
private val changeAdapter = FilterGridAdapter(change)
|
|
//筛选参数
|
private var brandId:Int? = null
|
private var type:Int? = null
|
private var cityCode:String? = null
|
private var provinceCode:String? = null
|
private var transmissionCase:String? = null
|
private var startLicensingTime:Int? = null
|
private var endLicensingTime:Int? = null
|
private var startDisplacement:Double? = null
|
private var endDisplacement:Double? = null
|
private var startMileage:Int? = null
|
private var endMileage:Int? = null
|
private var startTransferPrice:Double? = null
|
private var endTransferPrice:Double? = null
|
|
override fun initClick() {
|
adapter.setOnItemClickListener { view, position ->
|
startActivity<CarDetailActivity>("id" to list[position].id)
|
}
|
bg_shadow.setOnClickListener { closeFilter() }
|
fl_search1.setOnClickListener {
|
if (tv_search1.isSelected)
|
closeFilter()
|
else{
|
closeFilter()
|
tv_search1.isSelected = true
|
bg_shadow.visible()
|
rv_brand.visible()
|
val loadAnimation = AnimationUtils.loadAnimation(this, R.anim.nemu_top_in)
|
rv_brand.startAnimation(loadAnimation)
|
}
|
}
|
fl_search2.setOnClickListener {
|
if (tv_search2.isSelected)
|
closeFilter()
|
else{
|
closeFilter()
|
tv_search2.isSelected = true
|
bg_shadow.visible()
|
cl_price.visible()
|
val loadAnimation = AnimationUtils.loadAnimation(this, R.anim.nemu_top_in)
|
cl_price.startAnimation(loadAnimation)
|
}
|
}
|
fl_search3.setOnClickListener {
|
if (tv_search_region.isSelected)
|
closeFilter()
|
else{
|
closeFilter()
|
tv_search_region.isSelected = true
|
bg_shadow.visible()
|
ll_region.visible()
|
val loadAnimation = AnimationUtils.loadAnimation(this, R.anim.nemu_top_in)
|
ll_region.startAnimation(loadAnimation)
|
}
|
}
|
fl_search4.setOnClickListener {
|
if (tv_search4.isSelected)
|
closeFilter()
|
else{
|
closeFilter()
|
tv_search4.isSelected = true
|
bg_shadow.visible()
|
ll_more.visible()
|
val loadAnimation = AnimationUtils.loadAnimation(this, R.anim.nemu_top_in)
|
ll_more.startAnimation(loadAnimation)
|
}
|
}
|
priceAdapter.setOnItemClickListener { view, position ->
|
priceAdapter.checked = position
|
priceAdapter.notifyDataSetChanged()
|
when(priceAdapter.checked){
|
0->{
|
et_start.setText("")
|
et_end.setText("")
|
}
|
1->{
|
et_start.setText("")
|
et_end.setText("40000")
|
}
|
2->{
|
et_start.setText("40000")
|
et_end.setText("60000")
|
}
|
3->{
|
et_start.setText("60000")
|
et_end.setText("80000")
|
}
|
4->{
|
startTransferPrice = 80000.0
|
endTransferPrice = null
|
et_start.setText("80000")
|
et_end.setText("")
|
}
|
}
|
}
|
et_start.setOnFocusChangeListener { v, hasFocus ->
|
if (hasFocus){
|
priceAdapter.checked = -1
|
priceAdapter.notifyDataSetChanged()
|
}
|
}
|
et_end.setOnFocusChangeListener { v, hasFocus ->
|
if (hasFocus){
|
priceAdapter.checked = -1
|
priceAdapter.notifyDataSetChanged()
|
}
|
}
|
tv_reset.setOnClickListener {
|
et_start.setText("")
|
et_end.setText("")
|
priceAdapter.checked = 0
|
priceAdapter.notifyDataSetChanged()
|
}
|
tv_ok.setOnClickListener {
|
when(priceAdapter.checked){
|
0->{
|
startTransferPrice = null
|
endTransferPrice = null
|
}
|
1->{
|
startTransferPrice = 0.0
|
endTransferPrice = 40000.0
|
}
|
2->{
|
startTransferPrice = 40000.0
|
endTransferPrice = 60000.0
|
}
|
3->{
|
startTransferPrice = 60000.0
|
endTransferPrice = 80000.0
|
}
|
4->{
|
startTransferPrice = 80000.0
|
endTransferPrice = null
|
}
|
else->{
|
try {
|
startTransferPrice = et_start.text.toString().toDouble()
|
endTransferPrice = et_end.text.toString().toDouble()
|
}catch (e:Exception){
|
myToast("请输入正确的价格")
|
return@setOnClickListener
|
}
|
if (startTransferPrice!!>endTransferPrice!!){
|
myToast("最低价不能高于最高价")
|
return@setOnClickListener
|
}
|
}
|
}
|
closeFilter()
|
refresh()
|
}
|
|
cityAdapter.setOnItemClickListener { view, position ->
|
cityAdapter.checked = position
|
cityAdapter.notifyDataSetChanged()
|
closeFilter()
|
cityCode = if (position == 0){
|
tv_search_region.text = provinces[provinceAdapter?.checked?:0].name
|
null
|
} else{
|
tv_search_region.text = cityStrings[position]
|
cities[position].code
|
}
|
val cityName = provinces[provinceAdapter?.checked?:0].name + cityStrings[position]
|
Log.e("mmp","筛选地区:$cityName")
|
refresh()
|
}
|
|
sourceAdapter.setOnItemClickListener { view, position ->
|
sourceAdapter.checked = position
|
sourceAdapter.notifyDataSetChanged()
|
}
|
yearAdapter.setOnItemClickListener { view, position ->
|
yearAdapter.checked = position
|
yearAdapter.notifyDataSetChanged()
|
}
|
mileAdapter.setOnItemClickListener { view, position ->
|
mileAdapter.checked = position
|
mileAdapter.notifyDataSetChanged()
|
}
|
paiAdapter.setOnItemClickListener { view, position ->
|
paiAdapter.checked = position
|
paiAdapter.notifyDataSetChanged()
|
}
|
changeAdapter.setOnItemClickListener { view, position ->
|
changeAdapter.checked = position
|
changeAdapter.notifyDataSetChanged()
|
}
|
tv_reset1.setOnClickListener {
|
sourceAdapter.checked = 0
|
sourceAdapter.notifyDataSetChanged()
|
yearAdapter.checked = 0
|
yearAdapter.notifyDataSetChanged()
|
mileAdapter.checked = 0
|
mileAdapter.notifyDataSetChanged()
|
paiAdapter.checked = 0
|
paiAdapter.notifyDataSetChanged()
|
changeAdapter.checked = 0
|
changeAdapter.notifyDataSetChanged()
|
}
|
tv_ok1.setOnClickListener {
|
type = if(sourceAdapter.checked == 0) null else sourceAdapter.checked
|
when(yearAdapter.checked){
|
0->{
|
startLicensingTime = null
|
endLicensingTime = null
|
}
|
1->{
|
startLicensingTime = null
|
endLicensingTime = 1
|
}
|
2->{
|
startLicensingTime = 1
|
endLicensingTime = 3
|
}
|
3->{
|
startLicensingTime = 3
|
endLicensingTime = 5
|
}
|
4->{
|
startLicensingTime = 5
|
endLicensingTime = 10
|
}
|
5->{
|
startLicensingTime = 10
|
endLicensingTime = null
|
}
|
}
|
when(mileAdapter.checked){
|
0->{
|
startMileage = null
|
endMileage = null
|
}
|
1->{
|
startMileage = null
|
endMileage = 1
|
}
|
2->{
|
startMileage = 1
|
endMileage = 3
|
}
|
3->{
|
startMileage = 3
|
endMileage = 5
|
}
|
4->{
|
startMileage = 5
|
endMileage = 8
|
}
|
5->{
|
startMileage = 8
|
endMileage = 12
|
}
|
6->{
|
startMileage = 12
|
endMileage = null
|
}
|
}
|
when(paiAdapter.checked){
|
0->{
|
startDisplacement = null
|
endDisplacement = null
|
}
|
1->{
|
startDisplacement = null
|
endDisplacement = 1.0
|
}
|
2->{
|
startDisplacement = 1.0
|
endDisplacement = 1.6
|
}
|
3->{
|
startDisplacement = 1.6
|
endDisplacement = 2.0
|
}
|
4->{
|
startDisplacement = 50000.0
|
endDisplacement = 80000.0
|
}
|
5->{
|
startDisplacement = 2.0
|
endDisplacement = 2.5
|
}
|
6->{
|
startDisplacement = 2.5
|
endDisplacement = 3.0
|
}
|
7->{
|
startDisplacement = 3.0
|
endDisplacement = 4.0
|
}
|
8->{
|
startDisplacement = 4.0
|
endDisplacement = null
|
}
|
}
|
transmissionCase = if (changeAdapter.checked == 0) null else change[changeAdapter.checked]
|
closeFilter()
|
refresh()
|
}
|
|
bg_search.clickDelay {
|
closeFilter()
|
startActivity<SearchCarActivity>("type" to SearchCarActivity.TYPE_SALE)
|
}
|
}
|
|
override fun initView() {
|
title = "车辆售卖"
|
swipeRefreshLayout.setLayoutManager(LinearLayoutManager(this))
|
swipeRefreshLayout.setAdapter(adapter)
|
swipeRefreshLayout.setOnRefreshListener(object :SwipeRefreshRecyclerLayout.OnRefreshListener{
|
override fun onRefresh() {
|
page = 1
|
getData()
|
}
|
|
override fun onLoadMore() {
|
page++
|
getData()
|
}
|
})
|
//品牌
|
rv_brand.layoutManager = LinearLayoutManager(this)
|
getBrands()
|
//价格
|
rv_price.layoutManager = GridLayoutManager(this,4)
|
rv_price.adapter = priceAdapter
|
//地区
|
rv_province.layoutManager = LinearLayoutManager(this)
|
rv_city.layoutManager = LinearLayoutManager(this)
|
rv_city.adapter = cityAdapter
|
cityStrings.add("不限")
|
cityAdapter.notifyDataSetChanged()
|
getProvince()
|
//更多
|
rv_source.layoutManager = GridLayoutManager(this,4)
|
rv_source.adapter = sourceAdapter
|
rv_year.layoutManager = GridLayoutManager(this,4)
|
rv_year.adapter = yearAdapter
|
rv_mile.layoutManager = GridLayoutManager(this,4)
|
rv_mile.adapter =mileAdapter
|
rv_pai.layoutManager = GridLayoutManager(this,4)
|
rv_pai.adapter = paiAdapter
|
rv_change.layoutManager = GridLayoutManager(this,4)
|
rv_change.adapter = changeAdapter
|
|
getData()
|
}
|
|
private fun getData(){
|
HttpManager.getSellingCarList(brandId,null,provinceCode,cityCode,transmissionCase,
|
startDisplacement,endDisplacement,startMileage,endMileage,type,startTransferPrice,endTransferPrice,
|
startLicensingTime,endLicensingTime,page).request(this,success = {_,data->
|
swipeRefreshLayout.isRefreshing = false
|
if (page == 1)
|
list.clear()
|
list.addAll(data?: emptyList())
|
adapter.notifyDataSetChanged()
|
}){_,_->
|
swipeRefreshLayout.isRefreshing = false
|
}
|
}
|
|
private fun getBrands(){
|
HttpManager.queryAllBrand().request(this,false){_,data->
|
brands.clear()
|
brands.add(Brand(0,name = "全部"))
|
brands.addAll(data?: arrayListOf())
|
val arrayListOf = arrayListOf<String>()
|
arrayListOf.addAll(brands.map { it.name })
|
brandAdapter = StringAdapter(arrayListOf)
|
rv_brand.adapter = brandAdapter
|
brandAdapter?.setOnItemClickListener { view, position ->
|
brandId = if (position == 0) null else brands[position].id
|
tv_search1.text = brands[position].name
|
refresh()
|
closeFilter()
|
}
|
}
|
}
|
|
private fun getProvince(provinceId:Int = 0) {
|
HttpManager.queryRegions(provinceId).request(this, false) { _, data ->
|
if (provinceId != 0) {
|
cities.addAll(data?: emptyList())
|
cityStrings.clear()
|
cityStrings.addAll(cities.map { it.name })
|
cityAdapter.notifyDataSetChanged()
|
} else {
|
provinces.add(City(name = "全国"))
|
provinces.addAll(data ?: arrayListOf())
|
val arrayListOf = arrayListOf<String>()
|
arrayListOf.addAll(provinces.map { it.name })
|
provinceAdapter = FilterStringAdapter(arrayListOf)
|
provinceAdapter!!.setOnItemClickListener { view, position ->
|
provinceAdapter!!.checked = position
|
provinceAdapter!!.notifyDataSetChanged()
|
cityAdapter.checked = 0
|
cities.clear()
|
cities.add(City(name="不限"))
|
cityCode = null
|
provinceCode = if (position == 0){
|
cityAdapter.notifyDataSetChanged()
|
null
|
} else{
|
getProvince(provinces[position].id)
|
provinces[position].code
|
}
|
}
|
rv_province.adapter = provinceAdapter
|
}
|
}
|
}
|
|
|
private fun closeFilter() {
|
bg_shadow.gone()
|
rv_brand.gone()
|
cl_price.gone()
|
ll_region.gone()
|
ll_more.gone()
|
tv_search1.isSelected = false
|
tv_search2.isSelected = false
|
tv_search_region.isSelected = false
|
tv_search4.isSelected = false
|
}
|
|
private fun refresh(){
|
swipeRefreshLayout.isRefreshing = true
|
page = 1
|
getData()
|
}
|
}
|