diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 745ee11..eb4057e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -156,6 +156,12 @@
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateHidden" />
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/dhsd/glowner/bean/CarBean.kt b/app/src/main/java/com/dhsd/glowner/bean/CarBean.kt
index 002bea8..0fdbb15 100644
--- a/app/src/main/java/com/dhsd/glowner/bean/CarBean.kt
+++ b/app/src/main/java/com/dhsd/glowner/bean/CarBean.kt
@@ -39,3 +39,17 @@ data class CarBean(
val avatar: String="",
var isSelect: Boolean = false
)
+data class CaptainBean(
+ val auditStatus: String,
+ val businessEnterpriseName: String,
+ val businessLegalPerson: String,
+ val captainId: Int,
+ val captainName: String,
+ val captainType: String,
+ val contactName: String,
+ val idcardName: String,
+ val isRealName: String,
+ val status: String,
+ var isSelect: Boolean = false
+)
+
diff --git a/app/src/main/java/com/dhsd/glowner/net/Api.kt b/app/src/main/java/com/dhsd/glowner/net/Api.kt
index 62e74e4..ace4e9c 100644
--- a/app/src/main/java/com/dhsd/glowner/net/Api.kt
+++ b/app/src/main/java/com/dhsd/glowner/net/Api.kt
@@ -1,6 +1,7 @@
import com.dahe.glex.bean.*
import com.dahe.mylibrary.net.CommonResponseBean
import com.dhsd.glowner.BuildConfig
+import com.dhsd.glowner.bean.CaptainBean
import com.dhsd.glowner.bean.CarBean
import com.dhsd.glowner.bean.LoginBean
import io.reactivex.rxjava3.core.Observable
@@ -72,4 +73,20 @@ interface Api {
fun dispatchVehicles(@Body bean: DispatchBean): Observable>
+
+ /**
+ * 查询车队列表
+ * @return Observable>
+ */
+ @GET(BASE_URL+"devApi/business/ft/common/dict/onlyCaptain")
+ fun getCaptainList(): Observable>>
+
+
+ /**
+ * 查询车队下的司机与车辆列表
+ * @param captainId String 车队ID
+ * @return Observable>>
+ */
+ @GET(BASE_URL+"devApi/business/ft/common/dict/captain/driverAndCar")
+ fun driverAndCarList(@Query("captainId") captainId:String): Observable>>
}
\ No newline at end of file
diff --git a/app/src/main/java/com/dhsd/glowner/ui/MarketsActivity.kt b/app/src/main/java/com/dhsd/glowner/ui/MarketsActivity.kt
new file mode 100644
index 0000000..b5482f2
--- /dev/null
+++ b/app/src/main/java/com/dhsd/glowner/ui/MarketsActivity.kt
@@ -0,0 +1,33 @@
+package com.dhsd.glowner.ui
+
+import android.content.Context
+import android.content.Intent
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.dhsd.glowner.databinding.MarketsActivityBinding
+import pokercc.android.expandablerecyclerview.ExpandableItemAnimator
+
+class MarketsActivity : AppCompatActivity() {
+ companion object {
+ fun start(context: Context) {
+ context.startActivity(Intent(context, MarketsActivity::class.java))
+ }
+ }
+
+ private val binding by lazy { MarketsActivityBinding.inflate(layoutInflater) }
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(binding.root)
+ binding.more.setOnClickListener {
+// MenuActivity.start(it.context)
+ }
+ with(binding.recyclerView) {
+ adapter = MarketsAdapter()
+ itemAnimator = ExpandableItemAnimator(this, animChildrenItem = true)
+ addItemDecoration(MarketsItemDecoration())
+ layoutManager = LinearLayoutManager(context)
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/dhsd/glowner/ui/MarketsAdapter.kt b/app/src/main/java/com/dhsd/glowner/ui/MarketsAdapter.kt
new file mode 100644
index 0000000..3874ac1
--- /dev/null
+++ b/app/src/main/java/com/dhsd/glowner/ui/MarketsAdapter.kt
@@ -0,0 +1,146 @@
+package com.dhsd.glowner.ui
+
+import android.animation.ArgbEvaluator
+import android.graphics.Color
+import android.graphics.drawable.ShapeDrawable
+import android.graphics.drawable.shapes.OvalShape
+import android.graphics.drawable.shapes.RoundRectShape
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import com.dahe.mylibrary.utils.BaseUtils
+import com.dahe.mylibrary.utils.ToastUtils
+import com.dhsd.glowner.databinding.MarketsChildItemBinding
+import com.dhsd.glowner.databinding.MarketsParentItemBinding
+import pokercc.android.expandablerecyclerview.ExpandableAdapter
+
+class MarketChildVH(val binding: MarketsChildItemBinding) :
+ ExpandableAdapter.ViewHolder(binding.root)
+
+class MarketParentVH(val binding: MarketsParentItemBinding) :
+ ExpandableAdapter.ViewHolder(binding.root)
+
+private val names = listOf(
+ "Nathaniel Fitzgerald",
+ "Lawrence Fuller",
+ "Jacob Mullins",
+ "Jesus Lewis",
+ "Johnny Marr"
+)
+
+private val titles = listOf(
+ "title1",
+ "Ltitle2",
+ "Jtitle3",
+ "title4",
+ "title5",
+ "title6"
+)
+
+class MarketsAdapter : ExpandableAdapter() {
+ override fun onCreateGroupViewHolder(
+ viewGroup: ViewGroup,
+ viewType: Int
+ ): ExpandableAdapter.ViewHolder = LayoutInflater.from(viewGroup.context)
+ .let { MarketsParentItemBinding.inflate(it, viewGroup, false) }
+ .let { MarketParentVH(it) }
+
+
+ override fun onCreateChildViewHolder(
+ viewGroup: ViewGroup,
+ viewType: Int
+ ): ExpandableAdapter.ViewHolder = LayoutInflater.from(viewGroup.context)
+ .let { MarketsChildItemBinding.inflate(it, viewGroup, false) }
+ .let { MarketChildVH(it) }
+
+ override fun onBindChildViewHolder(
+ holder: ExpandableAdapter.ViewHolder,
+ groupPosition: Int,
+ childPosition: Int,
+ payloads: List
+ ) {
+ holder as MarketChildVH
+ holder.binding.title.text = names.getOrNull(childPosition)
+ val childCount = getChildCount(groupPosition)
+ val radius = 4f
+ val shape = when {
+ childCount == 1 -> {
+ RoundRectShape(FloatArray(8) { radius }, null, null)
+ }
+ childPosition == 0 -> {
+ RoundRectShape(
+ floatArrayOf(radius, radius, radius, radius, 0f, 0f, 0f, 0f),
+ null,
+ null
+ )
+ }
+ childPosition == childCount - 1 -> {
+ RoundRectShape(
+ floatArrayOf(0f, 0f, 0f, 0f, radius, radius, radius, radius),
+ null, null
+ )
+ }
+ else -> {
+ RoundRectShape(null, null, null)
+ }
+ }
+ holder.binding.root.background = ShapeDrawable(shape).apply {
+ paint.color = Color.WHITE
+ }
+ }
+
+ override fun onBindGroupViewHolder(
+ holder: ExpandableAdapter.ViewHolder,
+ groupPosition: Int,
+ expand: Boolean,
+ payloads: List
+ ) {
+ holder as MarketParentVH
+ if (payloads.isEmpty()) {
+
+ val arrowImage = holder.binding.arrowImage
+ holder.binding.title.text = titles[groupPosition]
+ arrowImage.rotation = if (expand) -180f else 0f
+ val circleDrawable = CircleDrawable()
+ arrowImage.background = circleDrawable
+ circleDrawable.progress = if (expand) 1f else 0f
+// holder.binding.shadowView.alpha = if (expand) 1f else 0f
+ }
+
+ }
+
+ override fun onGroupViewHolderExpandChange(
+ holder: ExpandableAdapter.ViewHolder,
+ groupPosition: Int,
+ animDuration: Long,
+ expand: Boolean
+ ) {
+ holder as MarketParentVH
+ val arrowImage = holder.binding.arrowImage
+ ToastUtils.showToast(holder.binding.root.context, "dianjile")
+ arrowImage.animate()
+ .setDuration(animDuration)
+ .rotation(if (expand) -180f else 0f)
+ .setUpdateListener {
+ val progress = if (expand) it.animatedFraction else 1 - it.animatedFraction
+ (arrowImage.background as CircleDrawable).progress = progress
+// holder.binding.shadowView.alpha = progress
+ }
+ .start()
+ }
+
+ override fun getGroupCount(): Int = 6
+
+ override fun getChildCount(groupPosition: Int): Int = 5
+}
+
+private class CircleDrawable : ShapeDrawable(OvalShape()) {
+ private val argbEvaluator = ArgbEvaluator()
+ private val startColor = 0xff494949.toInt()
+ private val endColor = 0xfff64637.toInt()
+ var progress: Float = 0f
+ set(value) {
+ paint.color = argbEvaluator.evaluate(value, startColor, endColor) as Int
+ invalidateSelf()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/dhsd/glowner/ui/MarketsItemDecoration.kt b/app/src/main/java/com/dhsd/glowner/ui/MarketsItemDecoration.kt
new file mode 100644
index 0000000..ffd9225
--- /dev/null
+++ b/app/src/main/java/com/dhsd/glowner/ui/MarketsItemDecoration.kt
@@ -0,0 +1,71 @@
+package com.dhsd.glowner.ui
+
+import android.graphics.Canvas
+import android.graphics.Paint
+import android.graphics.Rect
+import android.view.View
+import androidx.core.view.iterator
+import androidx.recyclerview.widget.RecyclerView
+import com.dahe.mylibrary.utils.BaseSPUtils
+import com.dahe.mylibrary.utils.BaseUtils
+import com.dahe.mylibrary.utils.StringUtils
+import pokercc.android.expandablerecyclerview.ExpandableAdapter
+import pokercc.android.expandablerecyclerview.ExpandableRecyclerView
+
+class MarketsItemDecoration : RecyclerView.ItemDecoration() {
+ private val linePaint = Paint().apply {
+ color = 0xfff6f6f8.toInt()
+ strokeWidth = 1F
+// strokeWidth = BaseUtils.dip2px(this@MarketsItemDecoration.con, 1F).toFloat()
+ }
+
+ override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
+ super.onDrawOver(c, parent, state)
+ parent as ExpandableRecyclerView
+ val adapter = parent.requireAdapter()
+ val layoutManager = parent.layoutManager!!
+
+ // Draw divide line between children item.
+ for (view in parent) {
+ val viewHolder = parent.getChildViewHolder(view)
+ val params = viewHolder.itemView.layoutParams as RecyclerView.LayoutParams
+ viewHolder as ExpandableAdapter.ViewHolder
+ val (groupPosition, childPosition) = adapter.getItemLayoutPosition(viewHolder)
+ val childCount = adapter.getChildCount(groupPosition)
+ if (!adapter.isGroup(viewHolder.itemViewType) && childPosition != childCount - 1) {
+ val y = layoutManager.getDecoratedBottom(view) + view.translationY
+ parent.clipAndDrawChild(c, view) {
+ it.drawLine(
+ parent.paddingStart + 10f + params.marginStart, y,
+ parent.width - parent.paddingEnd.toFloat() - params.marginEnd, y,
+ linePaint
+ )
+ }
+
+ }
+ }
+
+ }
+
+ override fun getItemOffsets(
+ outRect: Rect,
+ view: View,
+ parent: RecyclerView,
+ state: RecyclerView.State
+ ) {
+ super.getItemOffsets(outRect, view, parent, state)
+ parent as ExpandableRecyclerView
+ val adapter = parent.requireAdapter()
+ val viewHolder = parent.getChildViewHolder(view)
+
+ //Give bottom margin when it is group type or it is the last one of group.
+ val isGroup = adapter.isGroup(viewHolder.itemViewType)
+ val firstChild = {
+ adapter.getItemLayoutPosition(viewHolder as ExpandableAdapter.ViewHolder).childPosition == 0
+ }
+ if (isGroup || firstChild()) {
+ outRect.top = 12f.toInt()
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/dhsd/glowner/ui/home/HomeFragment.kt b/app/src/main/java/com/dhsd/glowner/ui/home/HomeFragment.kt
index e7ac5c5..a02a1d6 100644
--- a/app/src/main/java/com/dhsd/glowner/ui/home/HomeFragment.kt
+++ b/app/src/main/java/com/dhsd/glowner/ui/home/HomeFragment.kt
@@ -31,6 +31,7 @@ import com.dhsd.glowner.adapter.WaybillAdapter
import com.dhsd.glowner.bean.PopBean
import com.dhsd.glowner.cuspop.OnCarSelectListener
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.utils.CommonPopUtils
@@ -66,10 +67,11 @@ class HomeFragment : BaseFragment(), RefreshCallBack {
binding.tvMar.isSelected = true
binding.ivNor.setOnClickListener {
+// ActivityUtils.startActivity(mContext, MarketsActivity::class.java)
ActivityUtils.startActivity(mContext, SendGoodsActivity::class.java)
}
- binding.ivNor.setOnClickListener {
+ binding.ivMul.setOnClickListener {
ActivityUtils.startActivity(mContext, SendGoodsActivity::class.java)
}
initData()
diff --git a/app/src/main/java/com/dhsd/glowner/ui/mine/activity/ChoiceCarActivity.kt b/app/src/main/java/com/dhsd/glowner/ui/mine/activity/ChoiceCarActivity.kt
index e89eca9..33b52a7 100644
--- a/app/src/main/java/com/dhsd/glowner/ui/mine/activity/ChoiceCarActivity.kt
+++ b/app/src/main/java/com/dhsd/glowner/ui/mine/activity/ChoiceCarActivity.kt
@@ -41,7 +41,7 @@ import io.reactivex.rxjava3.schedulers.Schedulers
class ChoiceCarActivity : BaseActivity(), OnLimitClickListener {
lateinit var adapter: DriverCarsAdapter
- var searchValue: String = ""
+ private var searchValue: String = ""
private var orderId: String = ""
private var selectCar: CarBean? = null
override fun initView(savedInstanceState: Bundle?) {
diff --git a/app/src/main/java/com/dhsd/glowner/ui/mine/activity/ChoiceFleetActivity.kt b/app/src/main/java/com/dhsd/glowner/ui/mine/activity/ChoiceFleetActivity.kt
index b57d6cb..9b6cc75 100644
--- a/app/src/main/java/com/dhsd/glowner/ui/mine/activity/ChoiceFleetActivity.kt
+++ b/app/src/main/java/com/dhsd/glowner/ui/mine/activity/ChoiceFleetActivity.kt
@@ -1,8 +1,27 @@
package com.dhsd.glowner.ui.mine.activity
+import BaseObserver
+import DataManager
+import RxHttpCallBack
+import android.graphics.Color
import android.os.Bundle
+import android.view.View
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
import com.dahe.mylibrary.base.BaseActivity
+import com.dahe.mylibrary.net.CommonResponseBean
+import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider
+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.bean.CaptainBean
+import com.dhsd.glowner.bean.CarBean
import com.dhsd.glowner.databinding.ActivityChoiceFleetCarBinding
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
+import io.reactivex.rxjava3.core.Scheduler
+import io.reactivex.rxjava3.schedulers.Schedulers
/**
* @ClassName ChoiceFleetActivity
@@ -12,10 +31,52 @@ import com.dhsd.glowner.databinding.ActivityChoiceFleetCarBinding
*/
class ChoiceFleetActivity : BaseActivity() {
override fun initView(savedInstanceState: Bundle?) {
- TODO("Not yet implemented")
+ setStatusBarColor(R.color.white)
+ setTitleBar("选择车队/车辆", View.OnClickListener { finish() }, true, "我的熟车") {
+ ToastUtils.showToast(mContext, "我的熟车")
+ }
+
+ binding.run {
+ recycler.run {
+ layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false)
+ addItemDecoration(
+ RecycleViewDivider(
+ LinearLayout.VERTICAL,
+ ConvertUtils.dp2px(12.0f),
+ Color.TRANSPARENT
+ )
+ )
+ adapter = DriverCarsAdapter()
+ adapter as DriverCarsAdapter
+ }.apply {
+ isStateViewEnable = true
+ }
+ }
}
override fun initDate() {
- TODO("Not yet implemented")
+ DataManager.getInstance().getCaptainList()
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(BaseObserver(mContext,object :RxHttpCallBack>(){
+ override fun onSuccess(t: CommonResponseBean>) {
+ super.onSuccess(t)
+
+ }
+ }))
+
+ }
+
+ private fun initList(rows: List) {
+// if (rows.isEmpty()) {
+// adapter.submitList(null)
+// adapter.setStateViewLayout(mContext, R.layout.empty_view)
+// } else {
+// if (mRefreshPage === 1) {
+// adapter?.submitList(rows)
+// } else {
+// adapter?.addAll(rows)
+// }
+// }
}
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable-xxhdpi/arrow_down.png b/app/src/main/res/drawable-xxhdpi/arrow_down.png
new file mode 100644
index 0000000..57b2635
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/arrow_down.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/market_arrow.png b/app/src/main/res/drawable-xxhdpi/market_arrow.png
new file mode 100644
index 0000000..7176ed0
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/market_arrow.png differ
diff --git a/app/src/main/res/drawable/markets_bg.xml b/app/src/main/res/drawable/markets_bg.xml
new file mode 100644
index 0000000..a5040ad
--- /dev/null
+++ b/app/src/main/res/drawable/markets_bg.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/markets_child_item_bg.xml b/app/src/main/res/drawable/markets_child_item_bg.xml
new file mode 100644
index 0000000..277ccf1
--- /dev/null
+++ b/app/src/main/res/drawable/markets_child_item_bg.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/markets_group_shadow.xml b/app/src/main/res/drawable/markets_group_shadow.xml
new file mode 100644
index 0000000..22f19bd
--- /dev/null
+++ b/app/src/main/res/drawable/markets_group_shadow.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/markets_parent_item_bg.xml b/app/src/main/res/drawable/markets_parent_item_bg.xml
new file mode 100644
index 0000000..a48489a
--- /dev/null
+++ b/app/src/main/res/drawable/markets_parent_item_bg.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/markets_price_bg.xml b/app/src/main/res/drawable/markets_price_bg.xml
new file mode 100644
index 0000000..ac6f648
--- /dev/null
+++ b/app/src/main/res/drawable/markets_price_bg.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/text_book_grade_bg.xml b/app/src/main/res/drawable/text_book_grade_bg.xml
new file mode 100644
index 0000000..d38d703
--- /dev/null
+++ b/app/src/main/res/drawable/text_book_grade_bg.xml
@@ -0,0 +1,16 @@
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_choice_fleet_car.xml b/app/src/main/res/layout/activity_choice_fleet_car.xml
index 11b11a1..7491c60 100644
--- a/app/src/main/res/layout/activity_choice_fleet_car.xml
+++ b/app/src/main/res/layout/activity_choice_fleet_car.xml
@@ -39,10 +39,9 @@
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/dp_6"
android:background="#00000000"
- android:hint="请输入车牌号/手机号进行搜索"
+ android:hint="请输入车队名称,车队长/司机姓名,手机号或车牌号"
android:inputType="text|textAutoComplete"
android:singleLine="true"
- android:text=""
android:textColor="@color/black"
android:textSize="14sp" />
diff --git a/app/src/main/res/layout/markets_activity.xml b/app/src/main/res/layout/markets_activity.xml
new file mode 100644
index 0000000..f18c4e3
--- /dev/null
+++ b/app/src/main/res/layout/markets_activity.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/markets_child_item.xml b/app/src/main/res/layout/markets_child_item.xml
new file mode 100644
index 0000000..0c7496a
--- /dev/null
+++ b/app/src/main/res/layout/markets_child_item.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/markets_parent_item.xml b/app/src/main/res/layout/markets_parent_item.xml
new file mode 100644
index 0000000..d3791bf
--- /dev/null
+++ b/app/src/main/res/layout/markets_parent_item.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
diff --git a/mylibrary/build.gradle b/mylibrary/build.gradle
index a741e74..0cc5259 100644
--- a/mylibrary/build.gradle
+++ b/mylibrary/build.gradle
@@ -86,6 +86,8 @@ 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 rootProject.ext.dependencies["WheelPicker"]
api rootProject.ext.dependencies["AddressPicker"]