派单-指派车队

This commit is contained in:
lijia 2024-10-29 16:29:30 +08:00
parent b967c7b5c2
commit 68084cfcf1
16 changed files with 585 additions and 75 deletions

View File

@ -155,12 +155,22 @@
android:configChanges="keyboardHidden|orientation|locale"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateHidden" />
<activity android:name=".ui.MarketsActivity"
<activity
android:name=".ui.mine.activity.ChoiceFleetActivity"
android:configChanges="keyboardHidden|orientation|locale"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateHidden"
></activity>
android:windowSoftInputMode="adjustPan|stateHidden" />
<activity
android:name=".ui.mine.activity.ChoiceFleetCarActivity"
android:configChanges="keyboardHidden|orientation|locale"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateHidden" />
<activity
android:name=".ui.MarketsActivity"
android:configChanges="keyboardHidden|orientation|locale"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateHidden"></activity>
</application>

View File

@ -0,0 +1,44 @@
package com.dhsd.glowner.adapter
import android.content.Context
import android.view.ViewGroup
import android.widget.ImageView
import com.chad.library.adapter4.BaseQuickAdapter
import com.chad.library.adapter4.viewholder.QuickViewHolder
import com.dahe.mylibrary.utils.ImageLoader
import com.dhsd.glowner.R
import com.dhsd.glowner.bean.CarBean
/**
* @ClassName WaybillAdapter
* @Author 用户
* @Date 2024/1/23 16:27
* @Description TODO
*/
class DriverFleetCarAdapter() :
BaseQuickAdapter<CarBean, QuickViewHolder>() {
override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: CarBean?) {
item?.let {
holder.run {
setBackgroundResource(R.id.cdContent, if (item.isSelect) R.drawable.shape_discar_8 else R.drawable.shape_white_8)
setText(R.id.tvCarNum, item.vehicleNum)
setText(R.id.tvDriverName, item.driverContactName)
setText(R.id.tvPhone, item.driverContactPhone)
setText(R.id.tvCarLen, """${item.carLong.toFloat().div(1000)}m/${item.approvedLoad.toFloat().div(1000)}吨/${item?.vehicleType}""")
ImageLoader.getInstance()
.loadRoundImage(context, item?.carUrl, 6, getView<ImageView>(R.id.ivHead))
}
}
}
override fun onCreateViewHolder(
context: Context,
parent: ViewGroup,
viewType: Int
): QuickViewHolder {
// 返回一个 ViewHolder
return QuickViewHolder(R.layout.item_driver_fleet_car, parent)
}
}

View File

@ -0,0 +1,46 @@
package com.dhsd.glowner.adapter.popadapter
import android.content.Context
import android.view.ViewGroup
import android.widget.CheckBox
import android.widget.ImageView
import com.chad.library.adapter4.BaseQuickAdapter
import com.chad.library.adapter4.viewholder.QuickViewHolder
import com.dahe.mylibrary.utils.ImageLoader
import com.dhsd.glowner.R
import com.dhsd.glowner.bean.CaptainBean
import com.dhsd.glowner.bean.CarBean
/**
* @ClassName WaybillAdapter
* @Author 用户
* @Date 2024/1/23 16:27
* @Description 选择车队
*/
class DriverFleetAdapter() :
BaseQuickAdapter<CaptainBean, QuickViewHolder>() {
override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: CaptainBean?) {
holder.run {
item?.let {
holder.run {
setText(R.id.tvTitle,it.captainName)
setText(R.id.tvName,it.contactName)
setText(R.id.tvPhone,it.idcardName)
// ImageLoader.getInstance()
// .loadRoundImage(context, it.driverAvatar, 6, getView<ImageView>(R.id.ivHead))
getView<CheckBox>(R.id.cBox).isChecked = it.isSelect
}
}
}
}
override fun onCreateViewHolder(
context: Context,
parent: ViewGroup,
viewType: Int
): QuickViewHolder {
// 返回一个 ViewHolder
return QuickViewHolder(R.layout.item_driver_fleet, parent)
}
}

View File

@ -10,6 +10,7 @@ object AppConfig {
const val BUGLY_APP_ID = "a5b894cef7"
const val TIME = "DA_HE_TIME"
const val ID = "DA_HE_ID"
const val CAPTAIN_ID = "CAPTAIN_ID"
const val PWD = "DA_HE_PHONE"
const val CODE = "DA_HE_PHONE"
const val SUCCESS_TYPE = "DA_HE_SUCCESS_TYPE"

View File

@ -33,6 +33,8 @@ data class CarBean(
var vehicleNum: String="",
val vehicleType: String="",
val contactName: String="",
val driverContactName: String="",
val driverContactPhone: String="",
val vehicleTypeCode: String="",
val idcardName: String="",
val contactPhone: String="",
@ -43,7 +45,7 @@ data class CaptainBean(
val auditStatus: String,
val businessEnterpriseName: String,
val businessLegalPerson: String,
val captainId: Int,
val captainId: String,
val captainName: String,
val captainType: String,
val contactName: String,

View File

@ -0,0 +1,10 @@
package com.dhsd.glowner.bean
/**
* @ClassName EventBean
* @Author john
* @Date 2024/10/29 16:17
* @Description TODO
*/
class HomeEvent(var isRefresh: Boolean)

View File

@ -88,5 +88,5 @@ interface Api {
* @return Observable<CommonResponseBean<MutableList<CaptainBean>>>
*/
@GET(BASE_URL+"devApi/business/ft/common/dict/captain/driverAndCar")
fun driverAndCarList(@Query("captainId") captainId:String): Observable<CommonResponseBean<MutableList<CaptainBean>>>
fun driverAndCarList(@Query("captainId") captainId:String): Observable<CommonResponseBean<MutableList<CarBean>>>
}

View File

@ -3,22 +3,19 @@ package com.dhsd.glowner.ui.home
import BaseObserver
import DataManager
import RxHttpCallBack
import android.app.Activity
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import android.util.Log
import android.widget.LinearLayout
import androidx.activity.result.ActivityResultRegistry
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter4.BaseQuickAdapter
import com.dahe.gldriver.base.AppConfig
import com.dahe.glex.bean.OrderBean
import com.dahe.glex.bean.OrderListBean
import com.dahe.glex.bean.TextOrder
import com.dahe.glex.bean.WayBillBean
import com.dahe.mylibrary.base.BaseFragment
import com.dahe.mylibrary.callback.RefreshCallBack
import com.dahe.mylibrary.net.CommonResponseBean
@ -28,15 +25,17 @@ import com.dahe.mylibrary.utils.ConvertUtils
import com.dahe.mylibrary.utils.ToastUtils
import com.dhsd.glowner.R
import com.dhsd.glowner.adapter.WaybillAdapter
import com.dhsd.glowner.bean.PopBean
import com.dhsd.glowner.cuspop.OnCarSelectListener
import com.dhsd.glowner.bean.HomeEvent
import com.dhsd.glowner.databinding.FragmentHomeBinding
import com.dhsd.glowner.ui.MarketsActivity
import com.dhsd.glowner.ui.home.activtiy.SendGoodsActivity
import com.dhsd.glowner.ui.mine.activity.ChoiceCarActivity
import com.dhsd.glowner.ui.mine.activity.ChoiceFleetActivity
import com.dhsd.glowner.utils.CommonPopUtils
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
/**
* @ClassName HomeFragment
@ -62,6 +61,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(), RefreshCallBack {
}
override fun onFragmentFirstVisible() {
EventBus.getDefault().register(this)
initRecy()
binding.tvMar.isSelected = true
@ -83,6 +83,13 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(), RefreshCallBack {
initData()
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun processResult(home: HomeEvent) {
if (home.isRefresh){
initData()
}
}
private fun initRecy() {
setRefresh(binding.refresh, this)
adapter = binding.recyclerView.run {
@ -108,9 +115,20 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(), RefreshCallBack {
mContext
) { _, position ->
if (position === 0) {
launcher.launch(Intent(mContext, ChoiceCarActivity::class.java).apply {
putExtras(Bundle().apply { putString(AppConfig.ID, item?.orderId) })
})
}
when (position) {
0->{
launcher.launch(Intent(mContext, ChoiceCarActivity::class.java).apply {
putExtras(Bundle().apply { putString(AppConfig.ID, item?.orderId) })
})
}
1 -> {
launcher.launch(Intent(mContext, ChoiceFleetActivity::class.java).apply {
putExtras(Bundle().apply { putString(AppConfig.ID, item?.orderId) })
})
}
}
}
}

View File

@ -138,10 +138,6 @@ class ChoiceCarActivity : BaseActivity<ActivityChoiceCarBinding>(), OnLimitClick
if (orderId.isEmpty())
return
if (selectCar == null) {
showToast("请选择车辆")
return

View File

@ -3,22 +3,31 @@ package com.dhsd.glowner.ui.mine.activity
import BaseObserver
import DataManager
import RxHttpCallBack
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import android.view.View
import android.widget.LinearLayout
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter4.BaseQuickAdapter
import com.dahe.gldriver.base.AppConfig
import com.dahe.glex.bean.DispatchBean
import com.dahe.mylibrary.base.BaseActivity
import com.dahe.mylibrary.net.CommonResponseBean
import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider
import com.dahe.mylibrary.utils.ActivityUtils
import com.dahe.mylibrary.utils.ConvertUtils
import com.dahe.mylibrary.utils.ToastUtils
import com.dhsd.glowner.R
import com.dhsd.glowner.adapter.DriverCarsAdapter
import com.dhsd.glowner.adapter.popadapter.DriverFleetAdapter
import com.dhsd.glowner.bean.CaptainBean
import com.dhsd.glowner.bean.CarBean
import com.dhsd.glowner.databinding.ActivityChoiceFleetCarBinding
import com.dhsd.glowner.utils.OnLimitClickHelper
import com.dhsd.glowner.utils.OnLimitClickListener
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Scheduler
import io.reactivex.rxjava3.schedulers.Schedulers
@ -29,15 +38,17 @@ import io.reactivex.rxjava3.schedulers.Schedulers
* @Date 2024/10/24 16:02
* @Description 选择车队/车辆
*/
class ChoiceFleetActivity : BaseActivity<ActivityChoiceFleetCarBinding>() {
class ChoiceFleetActivity : BaseActivity<ActivityChoiceFleetCarBinding>(), OnLimitClickListener {
lateinit var adapter: DriverFleetAdapter
private var orderId: String = ""
override fun initView(savedInstanceState: Bundle?) {
setStatusBarColor(R.color.white)
setTitleBar("选择车队/车辆", View.OnClickListener { finish() }, true, "我的熟车") {
ToastUtils.showToast(mContext, "我的熟车")
}
orderId = intent.extras?.getString(AppConfig.ID).toString()
binding.run {
recycler.run {
adapter = recycler.run {
layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false)
addItemDecoration(
RecycleViewDivider(
@ -46,37 +57,101 @@ class ChoiceFleetActivity : BaseActivity<ActivityChoiceFleetCarBinding>() {
Color.TRANSPARENT
)
)
adapter = DriverCarsAdapter()
adapter as DriverCarsAdapter
adapter = DriverFleetAdapter()
adapter as DriverFleetAdapter
}.apply {
isStateViewEnable = true
addOnItemChildClickListener(R.id.cBox) { adapter, view, position ->
val captainBean = adapter.items[position]
adapter.items.find { it.isSelect }?.isSelect = false
adapter.items[position].isSelect = true
notifyDataSetChanged()
}
setOnItemClickListener { adapter, view, position ->
ActivityUtils.startActivity(mContext, ChoiceFleetCarActivity::class.java, intent.extras?.apply {
putString(AppConfig.CAPTAIN_ID, adapter.items[position].captainId)
})
}
}
btnOk.setOnClickListener(OnLimitClickHelper(this@ChoiceFleetActivity))
}
}
override fun onClick(view: View?) {
super.onClick(view)
when (view?.id) {
R.id.btnOk -> {
dispatchVehicles()
}
}
}
override fun initDate() {
DataManager.getInstance().getCaptainList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext,object :RxHttpCallBack<MutableList<CaptainBean>>(){
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<MutableList<CaptainBean>>() {
override fun onSuccess(t: CommonResponseBean<MutableList<CaptainBean>>) {
super.onSuccess(t)
initList(t.data)
}
}))
}
private fun initList(rows: List<CarBean>) {
// if (rows.isEmpty()) {
// adapter.submitList(null)
// adapter.setStateViewLayout(mContext, R.layout.empty_view)
// } else {
// if (mRefreshPage === 1) {
// adapter?.submitList(rows)
// } else {
// adapter?.addAll(rows)
// }
// }
private fun initList(rows: List<CaptainBean>) {
if (rows.isEmpty()) {
adapter.submitList(null)
adapter.setStateViewLayout(mContext, R.layout.empty_view)
} else {
if (mRefreshPage === 1) {
adapter?.submitList(rows)
} else {
adapter?.addAll(rows)
}
}
}
/**
* 分配车辆
*/
private fun dispatchVehicles() {
if (orderId.isEmpty())
return
val captainBean = adapter.items.find { it.isSelect }
if (captainBean == null) {
ToastUtils.showToast(mContext, "请选择车队")
return
}
DataManager.getInstance().dispatchVehicles(
DispatchBean(
orderId,
adapter.items.find { it.isSelect }?.captainId.toString(),
"",
""
)
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<Any>() {
override fun onSuccess(t: CommonResponseBean<Any>) {
super.onSuccess(t)
showToast(t.msg)
// 设置返回结果
setResult(AppCompatActivity.RESULT_OK, Intent())
finish()
}
}))
}
}

View File

@ -0,0 +1,160 @@
package com.dhsd.glowner.ui.mine.activity
import BaseObserver
import DataManager
import RxHttpCallBack
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import android.view.View
import android.widget.LinearLayout
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter4.BaseQuickAdapter
import com.dahe.gldriver.base.AppConfig
import com.dahe.glex.bean.DispatchBean
import com.dahe.mylibrary.base.BaseActivity
import com.dahe.mylibrary.net.CommonResponseBean
import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider
import com.dahe.mylibrary.utils.ActivityUtils
import com.dahe.mylibrary.utils.ConvertUtils
import com.dahe.mylibrary.utils.ToastUtils
import com.dhsd.glowner.R
import com.dhsd.glowner.adapter.DriverCarsAdapter
import com.dhsd.glowner.adapter.DriverFleetCarAdapter
import com.dhsd.glowner.adapter.popadapter.DriverFleetAdapter
import com.dhsd.glowner.bean.CaptainBean
import com.dhsd.glowner.bean.CarBean
import com.dhsd.glowner.bean.HomeEvent
import com.dhsd.glowner.databinding.ActivityChoiceFleetCarBinding
import com.dhsd.glowner.ui.HomeActivity
import com.dhsd.glowner.utils.OnLimitClickHelper
import com.dhsd.glowner.utils.OnLimitClickListener
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Scheduler
import io.reactivex.rxjava3.schedulers.Schedulers
import org.greenrobot.eventbus.EventBus
/**
* @ClassName ChoiceFleetActivity
* @Author john
* @Date 2024/10/24 16:02
* @Description 选择车队->车辆
*/
class ChoiceFleetCarActivity : BaseActivity<ActivityChoiceFleetCarBinding>(), OnLimitClickListener {
lateinit var adapter: DriverFleetCarAdapter
private var orderId: String = ""
private var captainId: String = ""
override fun initView(savedInstanceState: Bundle?) {
setStatusBarColor(R.color.white)
setTitleBar("选择车队/车辆", View.OnClickListener { finish() }, true, "我的熟车") {
ToastUtils.showToast(mContext, "我的熟车")
}
intent.extras?.let {
orderId = it.getString(AppConfig.ID).toString()
captainId = it.getString(AppConfig.CAPTAIN_ID).toString()
}
binding.run {
adapter = recycler.run {
layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false)
addItemDecoration(
RecycleViewDivider(
LinearLayout.VERTICAL,
ConvertUtils.dp2px(12.0f),
Color.TRANSPARENT
)
)
adapter = DriverFleetCarAdapter()
adapter as DriverFleetCarAdapter
}.apply {
isStateViewEnable = true
setOnItemClickListener { adapter, view, position ->
adapter.items.find { it.isSelect }?.isSelect = false
adapter.getItem(position)?.isSelect = true
// selectCar = adapter.getItem(position)
notifyDataSetChanged()
}
}
btnOk.setOnClickListener(OnLimitClickHelper(this@ChoiceFleetCarActivity))
}
}
override fun onClick(view: View?) {
super.onClick(view)
when (view?.id) {
R.id.btnOk -> {
dispatchVehicles()
}
}
}
override fun initDate() {
DataManager.getInstance().driverAndCarList(captainId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<MutableList<CarBean>>() {
override fun onSuccess(t: CommonResponseBean<MutableList<CarBean>>) {
super.onSuccess(t)
initList(t.data)
}
}))
}
private fun initList(rows: List<CarBean>) {
if (rows.isEmpty()) {
adapter.submitList(null)
adapter.setStateViewLayout(mContext, R.layout.empty_view)
} else {
if (mRefreshPage === 1) {
adapter?.submitList(rows)
} else {
adapter?.addAll(rows)
}
}
}
/**
* 分配车辆
*/
private fun dispatchVehicles() {
if (orderId.isEmpty())
return
val captainBean = adapter.items.find { it.isSelect }
if (captainBean == null) {
ToastUtils.showToast(mContext, "请选择车辆")
return
}
DataManager.getInstance().dispatchVehicles(
DispatchBean(
orderId,
captainId,
captainBean.driverId,
captainBean.carId
)
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<Any>() {
override fun onSuccess(t: CommonResponseBean<Any>) {
super.onSuccess(t)
showToast(t.msg)
ActivityUtils.finishToActivity(HomeActivity::class.java, false)
EventBus.getDefault().post(HomeEvent(true))
}
}))
}
}

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FFFFFAF0" />
<corners
android:radius="@dimen/dp_4" />
</shape>

View File

@ -9,44 +9,7 @@
<include layout="@layout/common_toolbar"></include>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:paddingLeft="@dimen/dp_15"
android:paddingTop="@dimen/dp_8"
android:paddingRight="@dimen/dp_15"
android:paddingBottom="@dimen/dp_8">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_40"
android:background="@drawable/shape_gray_bg20"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="@dimen/dp_16"
android:layout_height="@dimen/dp_16"
android:layout_marginLeft="@dimen/dp_10"
android:background="@drawable/search_icon_white"></ImageView>
<AutoCompleteTextView
android:id="@+id/etInput"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/dp_6"
android:background="#00000000"
android:hint="请输入车队名称,车队长/司机姓名,手机号或车牌号"
android:inputType="text|textAutoComplete"
android:singleLine="true"
android:textColor="@color/black"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler"

View File

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
android:background="@drawable/shape_bg8"
android:gravity="center_vertical"
android:paddingLeft="@dimen/dp_8"
android:paddingTop="@dimen/dp_12"
android:paddingRight="@dimen/dp_8"
android:paddingBottom="@dimen/dp_12">
<ImageView
android:id="@+id/ivHead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/head_defaut" />
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_12"
android:layout_toRightOf="@+id/ivHead"
android:text="王师傅的车队"
android:maxLength="10"
android:ellipsize="end"
android:textColor="@color/black"
android:textSize="@dimen/sp_16" />
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/ivHead"
android:layout_marginLeft="@dimen/dp_12"
android:layout_toRightOf="@+id/ivHead"
android:textColor="@color/color_9"
android:textSize="@dimen/sp_12"
tools:text="john" />
<View
android:id="@+id/vLine"
android:layout_width="@dimen/dp_1"
android:layout_height="@dimen/dp_10"
android:layout_alignBottom="@+id/tvName"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_2"
android:layout_toRightOf="@+id/tvName"
android:background="@color/color_c" />
<TextView
android:id="@+id/tvPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/ivHead"
android:layout_marginLeft="@dimen/dp_22"
android:layout_toRightOf="@+id/tvName"
android:textColor="@color/color_9"
android:textSize="@dimen/sp_12"
tools:text="15836200025" />
<CheckBox
android:id="@+id/cBox"
android:layout_width="@dimen/dp_30"
android:layout_height="@dimen/dp_30"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:button="@null"
android:drawableStart="@drawable/select_read"
/>
</RelativeLayout>

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_120"
android:id="@+id/cdContent"
android:clickable="true"
app:cardCornerRadius="@dimen/dp_8"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
app:contentPaddingLeft="@dimen/dp_12"
app:contentPaddingTop="@dimen/dp_10"
app:contentPaddingBottom="@dimen/dp_10"
app:contentPaddingRight="@dimen/dp_12">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_marginTop="@dimen/dp_10"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:id="@+id/tvDriverName"
android:layout_marginLeft="@dimen/dp_8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="王师傅"
android:textSize="@dimen/sp_14"
android:textColor="@color/black"
/>
<TextView
android:id="@+id/tvPhone"
android:layout_marginLeft="@dimen/dp_16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="156****5410"
android:textSize="@dimen/sp_14"
android:textColor="@color/black"
/>
</LinearLayout>
<LinearLayout
android:layout_marginTop="@dimen/dp_10"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/ivHead"
android:layout_width="@dimen/dp_76"
android:layout_height="@dimen/dp_55"
android:background="@drawable/login_car" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dp_16"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/tvCarNum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="豫A4982S"
android:textColor="@color/black"
android:textSize="@dimen/sp_18" />
<TextView
android:layout_alignParentBottom="true"
android:layout_marginTop="@dimen/dp_6"
android:id="@+id/tvCarLen"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:singleLine="true"
android:text="16米"
android:textColor="@color/color_9"
android:textSize="@dimen/sp_12" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>

View File

@ -86,7 +86,10 @@ dependencies {
api 'pub.devrel:easypermissions:3.0.0'
api 'io.github.lucksiege:compress:v3.11.2'
api 'androidx.cardview:cardview:1.0.0'
api "com.github.pokercc:ExpandableRecyclerView:0.9.3"
api 'org.greenrobot:eventbus:3.1.1'
api rootProject.ext.dependencies["WheelPicker"]