唐浩
昨天 3d631dbadf98f3f77c6e955cb36219217ef73ab5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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() }
    }
}