18034727885
2026-05-22 d551c7de2cfb41b35597423eb8e3237be904ed9d
修复问题
3个文件已添加
8个文件已修改
279 ■■■■■ 已修改文件
app/src/main/java/cn/ptaxi/yuekeduocx/driver/base/BaseRecyclerFragment.kt 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/ptaxi/yuekeduocx/driver/extension/StringExtension.kt 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/ptaxi/yuekeduocx/driver/ui/adapter/CityRouteLineDateHeaderAdapter.kt 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/ptaxi/yuekeduocx/driver/ui/main/CityRouteLineListFragment.kt 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/ptaxi/yuekeduocx/driver/ui/main/event/EventDetailFragment.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/ptaxi/yuekeduocx/driver/ui/main/event/MineEventFragment.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/ptaxi/yuekeduocx/driver/ui/mine/CommendInfoListFragment.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/ptaxi/yuekeduocx/driver/ui/mine/MineEvalFragment.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/ptaxi/yuekeduocx/driver/ui/to_city/TripCityActivity.kt 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_city_route_line_header.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_city_route_line_list_header.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/ptaxi/yuekeduocx/driver/base/BaseRecyclerFragment.kt
@@ -8,11 +8,16 @@
import androidx.recyclerview.widget.RecyclerView
import cn.ptaxi.yuekeduocx.driver.R
import cn.ptaxi.yuekeduocx.driver.netUtls.callNet
import cn.sinata.xldutils.activitys.BaseActivity
import cn.ptaxi.yuekeduocx.driver.utils.StatesBarUtil
import cn.sinata.xldutils.activitys.BaseActivity
import com.scwang.smartrefresh.layout.api.RefreshLayout
import kotlinx.android.synthetic.main.fragment_base_recycler.*
import java.util.*
import kotlinx.android.synthetic.main.fragment_base_recycler.fl_bottom
import kotlinx.android.synthetic.main.fragment_base_recycler.fl_h_top
import kotlinx.android.synthetic.main.fragment_base_recycler.fl_top
import kotlinx.android.synthetic.main.fragment_base_recycler.ll_nothing
import kotlinx.android.synthetic.main.fragment_base_recycler.recycler_view
import kotlinx.android.synthetic.main.fragment_base_recycler.smart_refresh_layout
import kotlinx.android.synthetic.main.fragment_base_recycler.tv_nothing
/**
 * Created by ts_xiaoA on 2019/9/25 09:59
@@ -35,10 +40,6 @@
    override fun onActivityCreated(savedInstanceState: Bundle?) {
        nothingMessage = "暂无相关数据"
        if (topViewResId != 0) {
            val topBinding = LayoutInflater.from(activity).inflate(topViewResId, fl_top, true)
            onBindTopView(topBinding)
        }
        if (bottomViewResId != 0) {
            val bottomBinding = LayoutInflater.from(activity)
                .inflate(bottomViewResId, fl_bottom, true)
@@ -88,9 +89,19 @@
    }
    /***
     * 添加一个父布局顶部View
     */
    open fun addParentTopView(view: View, needClear: Boolean = true) {
        if (needClear) {
            fl_top.removeAllViews()
        }
        fl_top.addView(view)
    }
    /***
     * 添加一个跟着滑动的顶部View
     */
    open fun addTopView(view: View?) {
    open fun addListTopView(view: View?) {
        fl_h_top.addView(view)
    }
@@ -134,11 +145,9 @@
    protected abstract fun mapObject(): HashMap<String?, Any?>? //网络请求的map
    protected abstract fun mapString(): HashMap<String?, String?>? //网络请求的map
    protected abstract fun getDatas(t: String?): List<Item> //解析数据
    //为recyclerView添加装饰、分割线
    fun addItemDecoration(recyclerView: RecyclerView?) {}
    //获取界面上方的布局(不随recyclerView滑动)
    protected val topViewResId: Int = 0
    //获取界面下方的布局(不随recyclerView滑动)
    open val bottomViewResId: Int = 0
@@ -185,12 +194,11 @@
    }
    fun callRefresh() {
        val map = mapObject()
        map?.set("size",10)
        map?.set("pageNum",page)
        callNet(pathUrl()!!,map!!,{
        map?.set("size", 10)
        map?.set("pageNum", page)
        callNet(pathUrl()!!, map!!, {
            if (it == null || it.isEmpty()) {
                return@callNet
            }
@@ -214,7 +222,7 @@
            }
            adapter.notifyDataSetChanged()
            noShowNothing()
        },{
        }, {
            noShowNothing()
            dismissDialog()
        })
@@ -223,9 +231,9 @@
    fun callLoadMore() {
        val map = mapObject()
        map?.set("size",pageSize)
        map?.set("pageNum",page)
        callNet(pathUrl()!!,map!!,{
        map?.set("size", pageSize)
        map?.set("pageNum", page)
        callNet(pathUrl()!!, map!!, {
            if (it == null || it.isEmpty()) {
                dismissDialog()
                return@callNet
app/src/main/java/cn/ptaxi/yuekeduocx/driver/extension/StringExtension.kt
@@ -1,5 +1,6 @@
package cn.ptaxi.yuekeduocx.driver.extension
import android.icu.util.Calendar
import java.text.SimpleDateFormat
//扩展函数 日期字符串更改显示模板
@@ -12,4 +13,38 @@
        e.printStackTrace()
        this
    }
}
//扩展函数 日期字符串转星期几
fun String.extDateToWeekNum(pattern: String): String {
    return try {
        SimpleDateFormat(pattern).parse(this)?.let {
            val calendar = Calendar.getInstance().apply {
                time = it
            }
            val now = Calendar.getInstance()
            val year = now.get(Calendar.YEAR)
            val month = now.get(Calendar.MONTH)
            val day = now.get(Calendar.DAY_OF_MONTH)
            if (year == calendar.get(Calendar.YEAR) && month == calendar.get(Calendar.MONTH) && day == calendar.get(
                    Calendar.DAY_OF_MONTH
                )
            ) {
                return "今天"
            }
            when (calendar.get(Calendar.DAY_OF_WEEK)) {
                Calendar.SUNDAY -> "周日"
                Calendar.MONDAY -> "周一"
                Calendar.TUESDAY -> "周二"
                Calendar.WEDNESDAY -> "周三"
                Calendar.THURSDAY -> "周四"
                Calendar.FRIDAY -> "周五"
                Calendar.SATURDAY -> "周六"
                else -> ""
            }
        } ?: this
    } catch (e: Exception) {
        e.printStackTrace()
        this
    }
}
app/src/main/java/cn/ptaxi/yuekeduocx/driver/ui/adapter/CityRouteLineDateHeaderAdapter.kt
New file
@@ -0,0 +1,45 @@
package cn.ptaxi.yuekeduocx.driver.ui.adapter
import android.graphics.Color
import android.view.View
import cn.ptaxi.yuekeduocx.driver.R
import cn.ptaxi.yuekeduocx.driver.base.BaseRvAdapter
import cn.ptaxi.yuekeduocx.driver.base.BaseViewHolder
import cn.ptaxi.yuekeduocx.driver.extension.extColorIdToValue
import cn.ptaxi.yuekeduocx.driver.extension.extDateChangeFormat
import cn.ptaxi.yuekeduocx.driver.extension.extDateToWeekNum
import kotlinx.android.synthetic.main.item_city_route_line_header.view.tv_label
//跨城线路日期header适配器
class CityRouteLineDateHeaderAdapter(val itemWidth: Int) : BaseRvAdapter<String>() {
    var choiceIndex = 0
        set(value) {
            field = value
            notifyDataSetChanged()
        }
    override fun getLayoutResId(viewType: Int) = R.layout.item_city_route_line_header
    override fun onBindItem(holder: BaseViewHolder?, view: View?, item: String?) {
        holder?.also {
            val label = if (item.isNullOrEmpty()) "全部" else "${
                item.extDateChangeFormat(
                    "yyyy-MM-dd",
                    "MM/dd"
                )
            }\n${item.extDateToWeekNum("yyyy-MM-dd")}"
            it.itemView.tv_label.setText(label)
            it.itemView.tv_label.layoutParams.apply {
                width = itemWidth
            }
            val backgroundColor =
                if (choiceIndex == holder.adapterPosition) R.color.red_deep.extColorIdToValue(it.itemView.context) else Color.TRANSPARENT
            it.itemView.tv_label.setBackgroundColor(backgroundColor)
            val textColor =
                if (choiceIndex == holder.adapterPosition) Color.WHITE else R.color.text_gray_car.extColorIdToValue(
                    it.itemView.context
                )
            it.itemView.tv_label.setTextColor(textColor)
        }
    }
}
app/src/main/java/cn/ptaxi/yuekeduocx/driver/ui/main/CityRouteLineListFragment.kt
@@ -1,7 +1,10 @@
package cn.ptaxi.yuekeduocx.driver.ui.main
import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager
import cn.ptaxi.yuekeduocx.driver.R
import cn.ptaxi.yuekeduocx.driver.base.BaseRecyclerFragment
import cn.ptaxi.yuekeduocx.driver.base.MyApplication
import cn.ptaxi.yuekeduocx.driver.bean.CityRouteLineInfo
import cn.ptaxi.yuekeduocx.driver.bean.CityRouteLineListApiResult
import cn.ptaxi.yuekeduocx.driver.netUtls.Api
@@ -9,13 +12,18 @@
import cn.ptaxi.yuekeduocx.driver.netUtls.getMapByAny
import cn.ptaxi.yuekeduocx.driver.ui.DialogUtil
import cn.ptaxi.yuekeduocx.driver.ui.adapter.CityRouteLineAdapter
import cn.ptaxi.yuekeduocx.driver.ui.adapter.CityRouteLineDateHeaderAdapter
import cn.ptaxi.yuekeduocx.driver.ui.to_city.ScanCityOrderActivity
import cn.ptaxi.yuekeduocx.driver.ui.to_city.TripCityActivity
import cn.ptaxi.yuekeduocx.driver.utils.toast
import kotlinx.android.synthetic.main.layout_city_route_line_list_header.view.rv_list
import org.jetbrains.anko.startActivity
import java.text.SimpleDateFormat
import java.util.Calendar
//跨城线路列表
class CityRouteLineListFragment : BaseRecyclerFragment<CityRouteLineInfo>(CityRouteLineAdapter()) {
    private var date = ""
    override fun pathUrl(): String? {
        return Api.queryMyDriverShiftList
@@ -23,6 +31,7 @@
    override fun mapObject(): HashMap<String?, Any?>? {
        var map = getMapByAny()
        map["date"] = date
        return map
    }
@@ -41,14 +50,9 @@
    }
    override fun initView() {
        initHeaderLayout()
        (adapter as CityRouteLineAdapter).cancelListener = { item: CityRouteLineInfo ->
            DialogUtil.getDelAndSureDialog(
                context,
                "确定",
                "取消",
                "您确定取消行程吗?",
                {
                }) {
            DialogUtil.getDelAndSureDialog(context, "确定", "取消", "您确定取消行程吗?", {}) {
                if (item.orderId?.isNotEmpty() == true) {
                    toast("班次已使用不允许取消")
                } else {
@@ -68,12 +72,41 @@
        (adapter as CityRouteLineAdapter).startListener = { item: CityRouteLineInfo ->
            if (item.orderId?.isNotEmpty() == true) {
                context.startActivity<TripCityActivity>(
                    "orderId" to item.orderId.toString(),
                    "orderType" to item.orderType.toString()
                    "orderId" to item.orderId.toString(), "orderType" to item.orderType.toString()
                )
            } else {
                toast("暂无订单")
            }
        }
    }
    //初始化header布局
    private fun initHeaderLayout() {
        val dateHeaderLayout =
            layoutInflater.inflate(R.layout.layout_city_route_line_list_header, null)
        val dateAdapter =
            CityRouteLineDateHeaderAdapter(MyApplication.getInstance().resources.displayMetrics.widthPixels / 5)
        dateHeaderLayout.rv_list.adapter = dateAdapter
        dateHeaderLayout.rv_list.layoutManager =
            LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
        addParentTopView(dateHeaderLayout)
        dateAdapter.data.clear()
        val calendar = Calendar.getInstance()
        val format = SimpleDateFormat("yyyy-MM-dd")
        val today = format.format(calendar.time)
        calendar.add(Calendar.DAY_OF_YEAR, 1)
        val nextDay = format.format(calendar.time)
        calendar.add(Calendar.DAY_OF_YEAR, 1)
        val nextDay2 = format.format(calendar.time)
        calendar.add(Calendar.DAY_OF_YEAR, 1)
        val nextDay3 = format.format(calendar.time)
        val list = listOf("", today, nextDay, nextDay2, nextDay3)
        dateAdapter.data.addAll(list)
        dateAdapter.setOnItemClickListener { _, position ->
            date = list[position]
            dateAdapter.choiceIndex = position
            autoRefresh()
        }
        dateAdapter.notifyDataSetChanged()
    }
}
app/src/main/java/cn/ptaxi/yuekeduocx/driver/ui/main/event/EventDetailFragment.kt
@@ -50,7 +50,7 @@
        if (!time.isNullOrEmpty()) {
            var view = createView(R.layout.item_time, context)
            view.tv_time.text = time
            addTopView(view)
            addListTopView(view)
        }
    }
app/src/main/java/cn/ptaxi/yuekeduocx/driver/ui/main/event/MineEventFragment.kt
@@ -51,7 +51,7 @@
        if (!time.isNullOrEmpty()) {
            var view = createView(R.layout.item_time, context)
            view.tv_time.text = time
            addTopView(view)
            addListTopView(view)
        }
    }
app/src/main/java/cn/ptaxi/yuekeduocx/driver/ui/mine/CommendInfoListFragment.kt
@@ -44,7 +44,7 @@
       var param =  tv_nothing.layoutParams as LinearLayout.LayoutParams
        param.topMargin = dp2px(66f)
        var view= layoutInflater.inflate(R.layout.item_commend_info_top,null)
        addTopView(view)
        addListTopView(view)
        view.tv_mine_commend.clickDelay {
            (adapter as CommendInfoListAdapter).type = 1
            type = 1
app/src/main/java/cn/ptaxi/yuekeduocx/driver/ui/mine/MineEvalFragment.kt
@@ -44,7 +44,7 @@
    override fun init() {
        super.init()
        var view = LayoutInflater.from(context).inflate(R.layout.item_top_mine_eval,null)
        addTopView(view)
        addListTopView(view)
        tv_start_num.text = getFormatOne(score.toDoubleOrNull())
    }
app/src/main/java/cn/ptaxi/yuekeduocx/driver/ui/to_city/TripCityActivity.kt
@@ -315,8 +315,8 @@
                                if (it.orderState == 5) {
                                    changeTopOrder()
                                }
                                if (it.orderState == 3 || it.orderState == 5)
                                    iv_to_gd.callOnClick()
//                                if (it.orderState == 3 || it.orderState == 5)
//                                    iv_to_gd.callOnClick()
                            }) {
                                it.orderState--
                            }
@@ -324,32 +324,32 @@
                        }
                        4 -> {
                            if (orderBean.data?.isSelfCityRouteLine != true) {
                                //手机后4位数字
                                val phoneLast4Number =
                                    it.realPhone.substring(it.realPhone.length - 4)
                                DialogUtil.getInputNumberDialog(
                                    this,
                                    phoneLast4Number.substring(0, 2), 4,
                                ) { value ->
                                    if (value != phoneLast4Number) {
                                        toast("手机号错误")
                                        return@getInputNumberDialog
                                    }
                                    it.orderState++
                                    callStatue(it.orderState, {
                                        tripItemAdapter.notifyDataSetChanged()
                                        showStatueMapUI(it)
                                        if (it.orderState == 5) {
                                            changeTopOrder()
                                        }
                                        if (it.orderState == 3 || it.orderState == 5)
                                            iv_to_gd.callOnClick()
                                    }) {
                                        it.orderState--
                                    }
                                }
                            } else {
//                            if (orderBean.data?.isSelfCityRouteLine != true) {
//                                //手机后4位数字
//                                val phoneLast4Number =
//                                    it.realPhone.substring(it.realPhone.length - 4)
//                                DialogUtil.getInputNumberDialog(
//                                    this,
//                                    phoneLast4Number.substring(0, 2), 4,
//                                ) { value ->
//                                    if (value != phoneLast4Number) {
//                                        toast("手机号错误")
//                                        return@getInputNumberDialog
//                                    }
//                                    it.orderState++
//                                    callStatue(it.orderState, {
//                                        tripItemAdapter.notifyDataSetChanged()
//                                        showStatueMapUI(it)
//                                        if (it.orderState == 5) {
//                                            changeTopOrder()
//                                        }
//                                        if (it.orderState == 3 || it.orderState == 5)
//                                            iv_to_gd.callOnClick()
//                                    }) {
//                                        it.orderState--
//                                    }
//                                }
//                            } else {
                                it.orderState++
                                callStatue(it.orderState, {
                                    tripItemAdapter.notifyDataSetChanged()
@@ -357,12 +357,12 @@
                                    if (it.orderState == 5) {
                                        changeTopOrder()
                                    }
                                    if (it.orderState == 3 || it.orderState == 5)
                                        iv_to_gd.callOnClick()
//                                    if (it.orderState == 3 || it.orderState == 5)
//                                        iv_to_gd.callOnClick()
                                }) {
                                    it.orderState--
                                }
                            }
//                            }
                            return@showChangeStateNoticeDialog
                        }
app/src/main/res/layout/item_city_route_line_header.xml
New file
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/tv_label"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:lineSpacingMultiplier="1.05"
        android:textColor="@color/text_gray_car"
        android:textSize="12sp"
        tools:text="2/19\n今天" />
</FrameLayout>
app/src/main/res/layout/layout_city_route_line_list_header.xml
New file
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rv_list"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginBottom="1dp"
        android:background="@color/white"
        tools:itemCount="3"
        tools:layoutManager="linear"
        tools:listitem="@layout/item_city_route_line_header" />
</FrameLayout>