18034727885
2026-04-14 370014cbb9ec1ef64e7e42bb4f9a12671461d8e4
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
package com.xw.yunwei.ui.work.car.detail.operations.charge
 
import android.annotation.SuppressLint
import androidx.recyclerview.widget.GridLayoutManager
import com.xw.common.base.BaseActivity
import com.xw.common.base.FileSelectBean
import com.xw.common.base.ImageEventListener
import com.xw.common.base.ImageSelectAdapter
import com.xw.common.base.ShowImgListDialog
import com.xw.common.custom.BatteryView.Companion.getBatteryColorByBatteryLife
import com.xw.common.utils.BindUtils.getUrls
import com.xw.yunwei.BR
import com.xw.yunwei.databinding.ActivityCarChargeDetailBinding
import com.xw.yunwei.model.CarModel
import java.util.ArrayList
import kotlin.text.ifEmpty
 
/**
 * 充电详情
 */
class ChargeDetailActivity: BaseActivity<ActivityCarChargeDetailBinding, ChargeDetailVM>() {
    override fun getBindingVariable() = BR.viewModel
 
    override fun init() {
        super.init()
        viewModel.carId = intent.getLongExtra("carId", 0L)
        viewModel.recordId = intent.getLongExtra("recordId", 0L)
        viewModel.queryInfo()
        viewModel.queryRecord()
        initAdapter()
    }
 
    @SuppressLint("SetTextI18n")
    override fun setObservable() {
        super.setObservable()
        viewModel.carInfo.observe(this) { initBasicInfo(it) }
        viewModel.recordInfo.observe(this) {
            with(viewModel) {
                it.startChargingPicture?.getUrls()?.let {
                    adapters[0].setList(it.map { FileSelectBean(url = it, type = "img") })
                }
                it.endChargingPicture?.getUrls()?.let {
                    adapters[1].setList(it.map { FileSelectBean(url = it, type = "img") })
                }
            }
            binding.batteryLifeStart.text = "${it.startRemainingBattery?:0}km"
            binding.batteryLifeStart.setTextColor(getBatteryColorByBatteryLife(it.startRemainingBattery ?: 0))
            binding.batteryViewStart.setBatteryLife(it.startRemainingBattery ?: 0)
 
            binding.batteryLifeEnd.text = "${it.endRemainingBattery?:0}km"
            binding.batteryLifeEnd.setTextColor(getBatteryColorByBatteryLife(it.endRemainingBattery ?: 0))
            binding.batteryViewEnd.setBatteryLife(it.endRemainingBattery ?: 0)
        }
    }
 
    @SuppressLint("SetTextI18n")
    private fun initBasicInfo(it: CarModel) {
        binding.batteryLife.text = "${it.mileageRange?.toInt()}km"
        binding.batteryLife.setTextColor(
            com.xw.common.custom.BatteryView.getBatteryColor(
                it.currentElectricity ?: 0
            )
        )
        binding.batteryView.setLevel(it.currentElectricity ?: 0)
    }
 
    private fun initAdapter(){
        viewModel.adapters.clear()
        viewModel.imageEvents.clear()
        for (index in 0 until 2) {
            val imageEvent = object : ImageEventListener<FileSelectBean>() {
                override fun viewImage(item: FileSelectBean) {
                    val imgList: MutableList<String> = ArrayList()
                    for (item1 in viewModel.adapters[index].data) {
                        imgList.add(item1.localPath.ifEmpty { item1.url })
                    }
                    ShowImgListDialog(
                        this@ChargeDetailActivity,
                        imgList,
                        imgList.indexOf(item.localPath)
                    ).show()
                }
            }
            viewModel.imageEvents.add(imageEvent)
 
            val adapter = ImageSelectAdapter(this, viewModel.maxSizes[index], 0, imageEvent)
            viewModel.adapters.add(adapter)
        }
 
        binding.rvStart.adapter = viewModel.adapters[0]
        binding.rvStart.layoutManager = GridLayoutManager(this, 4)
 
        binding.rvEnd.adapter = viewModel.adapters[1]
        binding.rvEnd.layoutManager = GridLayoutManager(this, 4)
    }
 
}