package com.ziang.driver.ui.adapter
|
|
import android.os.CountDownTimer
|
import android.view.View
|
import cn.sinata.xldutils.utils.Toast
|
import cn.sinata.xldutils.utils.clickDelay
|
import com.amap.api.maps.model.LatLng
|
import com.ziang.driver.R
|
import com.ziang.driver.base.BaseRvAdapter
|
import com.ziang.driver.base.BaseViewHolder
|
import com.ziang.driver.base.MyApplication
|
import com.ziang.driver.base.gaode.AMapKit
|
import com.ziang.driver.bean.OrderBean
|
import com.ziang.driver.netUtls.Api
|
import com.ziang.driver.netUtls.callNet
|
import com.ziang.driver.netUtls.getMapByAny
|
import com.ziang.driver.netUtls.timeOver
|
import com.ziang.driver.ui.main.TripActivity
|
import kotlinx.android.synthetic.main.item_get_order.tv_sure
|
import kotlinx.android.synthetic.main.item_small_order.view.tv_car_type
|
import kotlinx.android.synthetic.main.item_small_order.view.tv_close
|
import kotlinx.android.synthetic.main.item_small_order.view.tv_end
|
import kotlinx.android.synthetic.main.item_small_order.view.tv_reassign
|
import kotlinx.android.synthetic.main.item_small_order.view.tv_start
|
import kotlinx.android.synthetic.main.item_small_order.view.tv_sure
|
import kotlinx.android.synthetic.main.item_small_order.view.tv_time
|
import kotlinx.android.synthetic.main.item_small_order.view.tv_title
|
import org.jetbrains.anko.startActivity
|
|
class MainSmallAdapter:BaseRvAdapter<OrderBean>() {
|
|
var orderType = 0
|
override fun getLayoutResId(viewType: Int): Int {
|
return R.layout.item_small_order
|
}
|
|
override fun onBindItem(holder: BaseViewHolder?, view: View?, item: OrderBean?) {
|
item?.let { data ->
|
holder?.let {
|
it.mDownTimer?.cancel()
|
it.itemView.tv_car_type.text = "小程序订单"
|
it.itemView.tv_reassign.text = data.data.type
|
it.itemView.tv_time.text = data.data.travelTime
|
it.itemView.tv_start.text = data.data.startAddress
|
it.itemView.tv_end.text = data.data.endAddress
|
AMapKit.initRouteLine(
|
context,
|
LatLng(MyApplication.getLocation().latitude, MyApplication.getLocation().longitude),
|
LatLng(data.data.startLat, data.data.startLon),
|
object : (MutableList<LatLng>, Float, Long) -> Unit {
|
override fun invoke(
|
latLngs: MutableList<LatLng>,
|
lineTance: Float,
|
lineTime: Long
|
) {
|
it.itemView.tv_title.text = "距您约" + AMapKit.getTance(lineTance)
|
}
|
})
|
|
it.itemView.tv_close.clickDelay {
|
getData().remove(data)
|
notifyDataSetChanged()
|
}
|
it.itemView.tv_sure.clickDelay {
|
var map = getMapByAny()
|
map["orderId"] = data.data.orderId.toString()
|
map["orderType"] = orderType.toString()
|
callNet(context, Api.grabOrder, map) {
|
Toast.create(context).show("抢单成功")
|
// context.startActivity<TripActivity>("orderId" to data.data.orderId.toString()
|
// , "orderType" to orderType.toString())
|
getData().remove(data)
|
notifyDataSetChanged()
|
}
|
|
}
|
holder.mDownTimer = timeOvers((data.overTime.toLong() * 1000L),holder) {
|
if (it == 0) {
|
getData().remove(data)
|
notifyDataSetChanged()
|
} else {
|
data.overTime = (data.overTime.toLong()-1)
|
holder.itemView.tv_sure.text = "抢单" + it.toString() + "S"
|
}
|
}
|
}
|
}
|
}
|
|
override fun onViewRecycled(holder: BaseViewHolder) {
|
holder.mDownTimer?.cancel()
|
super.onViewRecycled(holder)
|
}
|
|
private fun timeOvers(timeDown: Long, holder: BaseViewHolder, click: (mill: Int) -> Unit): CountDownTimer {
|
return object : CountDownTimer(timeDown, 1000) {
|
override fun onFinish() = click(0)
|
override fun onTick(millisUntilFinished: Long) = click((millisUntilFinished / 1000).toInt())
|
}.apply { start() }
|
}
|
}
|