package com.dollearn.student.ui.worldcup
|
|
import android.graphics.Bitmap
|
import android.os.Bundle
|
import android.util.Log
|
import android.view.animation.AnimationUtils
|
import androidx.constraintlayout.widget.ConstraintLayout
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import cn.sinata.xldutils.activity.BaseActivity
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.visible
|
import com.bumptech.glide.Glide
|
import com.bumptech.glide.request.target.SimpleTarget
|
import com.bumptech.glide.request.transition.Transition
|
import com.github.zackratos.ultimatebar.UltimateBar
|
import com.dollearn.student.R
|
import com.dollearn.student.DollearnApplication
|
import com.dollearn.student.network.HttpManager
|
import com.dollearn.student.network.entity.Banner
|
import com.dollearn.student.network.entity.CommonData
|
import com.dollearn.student.network.entity.WorldCupBean
|
import com.dollearn.student.network.request
|
import com.dollearn.student.ui.home.adapter.FilterAdapter
|
import com.dollearn.student.ui.home.adapter.HomeBannerAdapter
|
import com.dollearn.student.ui.worldcup.adapter.WorldCupAdapter
|
import com.dollearn.student.utils.extention.clickDelay
|
import com.youth.banner.indicator.CircleIndicator
|
import kotlinx.android.synthetic.main.activity_world_cup.*
|
import org.jetbrains.anko.startActivity
|
import org.jetbrains.anko.textColorResource
|
|
class WorldCupListActivity : BaseActivity() {
|
|
private val bannerImg = arrayListOf<Banner>()
|
private val bannerAdapter by lazy {
|
HomeBannerAdapter(bannerImg, this)
|
}
|
private val bannerImg2 = arrayListOf<Banner>()
|
private val bannerAdapter2 by lazy {
|
HomeBannerAdapter(bannerImg2, this)
|
}
|
|
var siteId:Int? = null //赛点
|
var condition:Int? = null //报名条件(0=全部,1=男,2=女)
|
var heatSort:Int? = null //热度排序(1=正序,2=降序)
|
var search:String? = null //搜索
|
|
private val sites = arrayListOf<CommonData>() //赛点
|
private val conditions = arrayListOf("全部","男性","女性") //条件
|
private val filters = arrayListOf<String>() //筛选选项
|
private val filterAdapter = FilterAdapter(filters)
|
|
private val list = arrayListOf<WorldCupBean>()
|
private val adapter = WorldCupAdapter(list)
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
setContentView(R.layout.activity_world_cup)
|
initView()
|
initClick()
|
}
|
|
fun initClick() {
|
banner.setOnBannerListener { data, position ->
|
val banner = data as Banner
|
banner.name = banner.model
|
banner.jumpPage(this)
|
}
|
banner2.setOnBannerListener { data, position ->
|
val banner = data as Banner
|
banner.name = banner.model
|
banner.jumpPage(this)
|
}
|
tv_heat.clickDelay {
|
if (cb_site.isChecked)
|
cb_site.isChecked = false
|
if (cb_condition.isChecked)
|
cb_condition.isChecked = false
|
tv_heat.textColorResource = R.color.colorPrimary
|
if (heatSort == null||heatSort == 1)
|
heatSort = 2
|
else
|
heatSort = 1
|
tv_heat.setCompoundDrawablesRelativeWithIntrinsicBounds(0,0,if (heatSort == 1)R.mipmap.sort_asc else R.mipmap.sort_desc,0)
|
refreshLayout.autoRefresh()
|
}
|
cb_site.setOnCheckedChangeListener { _, isChecked ->
|
if (!isChecked)
|
closeFilter()
|
else{
|
if (cb_condition.isChecked)
|
cb_condition.isChecked = false
|
bg_filter.visible()
|
filters.clear()
|
filters.addAll(sites.map { it.name })
|
filterAdapter.checkedIndex = sites.map { it.id }.indexOf(siteId?:0)
|
filterAdapter.notifyDataSetChanged()
|
rv_filter.visible()
|
val loadAnimation = AnimationUtils.loadAnimation(this, R.anim.popup_in_from_top)
|
rv_filter.startAnimation(loadAnimation)
|
}
|
}
|
cb_condition.setOnCheckedChangeListener { _, isChecked ->
|
if (!isChecked)
|
closeFilter()
|
else{
|
if (cb_site.isChecked)
|
cb_site.isChecked = false
|
bg_filter.visible()
|
filters.clear()
|
filters.addAll(conditions)
|
filterAdapter.checkedIndex = condition?:-1
|
filterAdapter.notifyDataSetChanged()
|
rv_filter.visible()
|
val loadAnimation = AnimationUtils.loadAnimation(this, R.anim.popup_in_from_top)
|
rv_filter.startAnimation(loadAnimation)
|
}
|
}
|
bg_filter.setOnClickListener {
|
if (cb_condition.isChecked)
|
cb_condition.isChecked = false
|
else if (cb_site.isChecked)
|
cb_site.isChecked = false
|
}
|
filterAdapter.setOnItemClickListener { view, position ->
|
if (cb_site.isChecked){
|
if (position == 0)
|
siteId = null
|
else
|
siteId = sites[position].id
|
cb_site.isChecked = false
|
refreshLayout.autoRefresh()
|
}else if (cb_condition.isChecked){
|
condition = position
|
cb_condition.isChecked = false
|
refreshLayout.autoRefresh()
|
}
|
}
|
tv_search.clickDelay {
|
val s = et_search.text.toString()
|
search = if (s.isNullOrEmpty()) null else s
|
refreshLayout.autoRefresh()
|
}
|
adapter.setOnItemClickListener { view, position ->
|
startActivity<WorldCupDetailActivity>("id" to list[position].id)
|
}
|
}
|
|
fun initView() {
|
titleBar.titleView.text = title
|
titleBar.titleView.textColorResource = R.color.white
|
titleBar.leftView.setCompoundDrawablesWithIntrinsicBounds(R.mipmap.back_white,0,0,0)
|
UltimateBar.with(this)
|
.statusDark(false)
|
.create().transparentBar() //沉浸状态栏
|
banner.adapter = bannerAdapter
|
banner.indicator = CircleIndicator(this)
|
banner2.adapter = bannerAdapter2
|
banner2.indicator = CircleIndicator(this)
|
getBanner()
|
rv_game.layoutManager = LinearLayoutManager(this)
|
rv_game.adapter = adapter
|
refreshLayout.setOnRefreshListener {
|
getData()
|
}
|
getData()
|
//获取赛点筛选项数据
|
getSite()
|
rv_filter.layoutManager = LinearLayoutManager(this)
|
rv_filter.adapter = filterAdapter
|
}
|
|
private fun getSite() {
|
HttpManager.getWorldCupStore().request(this){_,data->
|
sites.add(CommonData(name = "不限"))
|
sites.addAll(data?: arrayListOf())
|
}
|
}
|
|
private fun getData(){
|
HttpManager.getWorldCupList(DollearnApplication.storeId,DollearnApplication.lat,DollearnApplication.lon,heatSort,condition,siteId,search).request(this,success = { _, data->
|
refreshLayout.finishRefresh()
|
list.clear()
|
list.addAll(data?: arrayListOf())
|
adapter.notifyDataSetChanged()
|
}){_,_->
|
refreshLayout.finishRefresh(false)
|
}
|
}
|
|
private fun getBanner() {
|
HttpManager.queryBanner(6).request(this){ _, data->
|
bannerImg.addAll(data?: arrayListOf())
|
if (bannerImg.isEmpty())
|
banner.gone()
|
else
|
bannerAdapter.notifyDataSetChanged()
|
banner.setCurrentItem(1)
|
}
|
HttpManager.queryBanner(7).request(this){ _, data->
|
if (!data.isNullOrEmpty()){
|
data?.firstOrNull()?.let {
|
Thread{
|
//获取图片真正的宽高
|
Glide.with(this).asBitmap().load(it.url)
|
.into(object : SimpleTarget<Bitmap?>() {
|
override fun onResourceReady(
|
resource: Bitmap,
|
transition: Transition<in Bitmap?>?
|
) {
|
Log.e("mmp","${resource.width}:${resource.height}")
|
runOnUiThread {
|
val layoutParams = banner2.layoutParams as ConstraintLayout.LayoutParams
|
layoutParams.dimensionRatio =
|
"${resource.width}:${resource.height}"
|
banner2.layoutParams = layoutParams
|
bannerImg2.addAll(data?: arrayListOf())
|
if (bannerImg2.isEmpty())
|
banner2.gone()
|
else
|
bannerAdapter2.notifyDataSetChanged()
|
banner2.setCurrentItem(1)
|
}
|
}
|
})
|
}.run()
|
}
|
}
|
}
|
}
|
|
private fun closeFilter(){
|
bg_filter.gone()
|
rv_filter.gone()
|
}
|
}
|