package com.dollearn.student.ui.discovery
|
|
import android.Manifest
|
import android.view.animation.AnimationUtils
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.utils.myToast
|
import cn.sinata.xldutils.visible
|
import com.amap.api.location.AMapLocationListener
|
import com.dollearn.student.R
|
import com.dollearn.student.WeparkApplication
|
import com.dollearn.student.network.HttpManager
|
import com.dollearn.student.network.entity.CommonData
|
import com.dollearn.student.network.entity.ShopListBean
|
import com.dollearn.student.network.request
|
import com.dollearn.student.ui.TransparentStatusBarActivity
|
import com.dollearn.student.ui.discovery.adapter.ShopAdapter
|
import com.dollearn.student.ui.home.adapter.OpenCityAdapter
|
import com.dollearn.student.utils.AMapKit
|
import com.dollearn.student.utils.Const
|
import com.dollearn.student.utils.event.EmptyEvent
|
import com.dollearn.student.utils.extention.clickDelay
|
import com.dollearn.student.utils.extention.getInitial
|
import com.tbruyelle.rxpermissions2.RxPermissions
|
import kotlinx.android.synthetic.main.activity_shop_list.*
|
import org.greenrobot.eventbus.EventBus
|
import org.jetbrains.anko.startActivity
|
import org.jetbrains.anko.textColorResource
|
|
/**
|
* 万俊杰:现在直接从首页banner进门店详情,门店列表暂时可以先不做,没得入口了
|
*/
|
class ShopListActivity : TransparentStatusBarActivity() {
|
override fun setContentView() = R.layout.activity_shop_list
|
|
private val list = arrayListOf<ShopListBean>()
|
private val adapter = ShopAdapter(list)
|
private var cityCode:String? = null
|
private var distanceSort: Int? = null //1=升序/2=降序
|
private var search:String? = null
|
|
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"
|
)
|
//筛选条件
|
private val cityList = arrayListOf<CommonData>() //展示数据源(搜索后过滤)
|
private val cityAdapter = OpenCityAdapter(cityList)
|
|
override fun initClick() {
|
tv_search.clickDelay {
|
val s = et_search.text.toString()
|
search = if (s.isNullOrEmpty()) null else s
|
refreshLayout.autoRefresh()
|
}
|
cityAdapter.setOnItemClickListener { view, position ->
|
cb_city.isChecked = false
|
cityCode = cityList[position].code
|
cb_city.text = cityList[position].name
|
refreshLayout.autoRefresh()
|
}
|
tv_current.setOnClickListener {
|
if (WeparkApplication.cityCode.isNotEmpty()){
|
cb_city.isChecked = false
|
cityCode = WeparkApplication.cityCode
|
cb_city.text = WeparkApplication.cityName
|
refreshLayout.autoRefresh()
|
}
|
}
|
tv_refresh.setOnClickListener {
|
val subscribe =
|
RxPermissions(this).request(Manifest.permission.ACCESS_FINE_LOCATION)
|
.subscribe {
|
if (it){
|
AMapKit.initLocation(this, AMapLocationListener {
|
WeparkApplication.lat = it.latitude
|
WeparkApplication.lon = it.longitude
|
WeparkApplication.province = it.province
|
WeparkApplication.provinceCode = "${it.adCode.substring(0,3)}000"
|
WeparkApplication.cityName = it.city
|
WeparkApplication.cityCode = "${it.adCode.substring(0,4)}00"
|
tv_current.text = it.city
|
})
|
}else
|
myToast("没有定位权限")
|
}
|
}
|
adapter.setOnItemClickListener { _, position ->
|
startActivity<ShopDetailActivity>("id" to list[position].storeId)
|
}
|
cb_city.setOnCheckedChangeListener { _, isChecked ->
|
if (!isChecked)
|
closeFilter()
|
else{
|
bg_filter.visible()
|
cl_city.visible()
|
val loadAnimation = AnimationUtils.loadAnimation(this, R.anim.popup_in_from_top)
|
cl_city.startAnimation(loadAnimation)
|
}
|
}
|
|
tv_distance.clickDelay {
|
tv_distance.textColorResource = R.color.colorPrimary
|
if (distanceSort == null || distanceSort == 2)
|
distanceSort = 1
|
else
|
distanceSort = 2
|
tv_distance.setCompoundDrawablesRelativeWithIntrinsicBounds(
|
0,
|
0,
|
if (distanceSort ==1) R.mipmap.sort_asc else R.mipmap.sort_desc,
|
0
|
)
|
refreshLayout.autoRefresh()
|
}
|
|
bg_filter.setOnClickListener {
|
if (cb_city.isChecked)
|
cb_city.isChecked = false
|
}
|
|
tv_location.setOnClickListener {
|
RxPermissions(this).request(Manifest.permission.ACCESS_FINE_LOCATION).subscribe {
|
if (it){
|
AMapKit.initLocation(this, AMapLocationListener {
|
WeparkApplication.lat = it.latitude
|
WeparkApplication.lon = it.longitude
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_USER)) //定位更新后 刷新福利页数据 因为商品推荐是根据经纬度来的
|
WeparkApplication.province = it.province
|
WeparkApplication.provinceCode = "${it.adCode.substring(0, 3)}000"
|
WeparkApplication.cityName = it.city
|
WeparkApplication.cityCode = "${it.adCode.substring(0, 4)}00"
|
tv_distance.visible()
|
cb_city.visible()
|
ll_location.gone()
|
})
|
}
|
}
|
}
|
}
|
|
override fun initView() {
|
if (RxPermissions(this).isGranted(Manifest.permission.ACCESS_FINE_LOCATION)){
|
tv_distance.visible()
|
cb_city.visible()
|
ll_location.gone()
|
}else{
|
tv_distance.gone()
|
cb_city.gone()
|
ll_location.visible()
|
}
|
rv_shop.layoutManager = LinearLayoutManager(this)
|
rv_shop.adapter = adapter
|
refreshLayout.setOnRefreshListener {
|
getData()
|
}
|
getData()
|
//筛选
|
rv_city.layoutManager = LinearLayoutManager(this)
|
rv_city.adapter = cityAdapter
|
side_bar.setOnSelectIndexItemListener { index ->
|
(0 until cityList.size).forEach {
|
if (index == cityList[it].name?.getInitial()) {
|
val manager = rv_city.layoutManager as LinearLayoutManager
|
manager.scrollToPositionWithOffset(it, 0)
|
return@setOnSelectIndexItemListener
|
}
|
}
|
}
|
//获取城市筛选项数据
|
getCity()
|
}
|
|
private fun getData(){
|
HttpManager.storeList(cityCode,distanceSort,search).request(this,success = {_,data->
|
refreshLayout.finishRefresh()
|
list.clear()
|
list.addAll(data?: arrayListOf())
|
adapter.notifyDataSetChanged()
|
}){_,_->
|
refreshLayout.finishRefresh(false)
|
}
|
}
|
|
private fun getCity(){
|
HttpManager.queryAllCity().request(this){_,data->
|
data?.let {
|
cityList.clear()
|
index.forEach { index->
|
it.filter { it.name.isNotEmpty() }.forEach {
|
if (index == it.name.getInitial()){
|
cityList.add(it)
|
}
|
}
|
}
|
adapter.notifyDataSetChanged()
|
}
|
}
|
}
|
|
private fun closeFilter(){
|
bg_filter.gone()
|
cl_city.gone()
|
}
|
|
}
|