[8.2.0]
[算路] [item view 修改(taxi bus)]
This commit is contained in:
@@ -18,6 +18,7 @@ data class GrayLineBean(
|
||||
var isChoosed: Boolean = false, //当前是否选中
|
||||
var startSite: RoutingSite?,
|
||||
var endSite: RoutingSite?,
|
||||
var allStation:MutableList<RoutingSite>?=null,
|
||||
var distance:Float,
|
||||
)
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.mogo.och.biz.routing.bean.QueryGrayContrailListRsp
|
||||
import com.mogo.och.biz.routing.bean.QueryPointErrorReasonsRsp
|
||||
import com.mogo.och.biz.routing.bean.QuerySitesReasons
|
||||
import com.mogo.och.biz.routing.bean.SaveGrayContrailErrorReasons
|
||||
import com.mogo.och.biz.routing.bean.SitesInfo
|
||||
import com.mogo.och.biz.routing.bean.StartGrayAndQueryContrailRsp
|
||||
import com.mogo.och.biz.routing.bean.StartGrayContrailTaskReq
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusManager
|
||||
@@ -164,4 +165,8 @@ object RoutingServiceManager {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun querySiteListByList(request: QuerySitesReasons): Observable<SitesInfo> {
|
||||
return mRoutingServiceApi.querySiteListByLine(data = request)
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.mogo.och.biz.routing.ui.routingselect
|
||||
|
||||
import android.content.Context
|
||||
import android.text.Spannable
|
||||
import android.text.SpannableString
|
||||
import android.text.style.ForegroundColorSpan
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
@@ -10,8 +13,11 @@ import androidx.recyclerview.widget.DiffUtil.Callback
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.och.biz.R
|
||||
import com.mogo.och.biz.routing.bean.GrayLineBean
|
||||
import com.mogo.och.biz.routing.bean.SitesInfo
|
||||
import com.mogo.och.common.module.utils.ResourcesUtils
|
||||
import me.jessyan.autosize.AutoSizeCompat
|
||||
|
||||
|
||||
/**
|
||||
* 路线列表adapter
|
||||
*/
|
||||
@@ -25,7 +31,11 @@ class RoutingItemAdapter(
|
||||
// RecyclerView设置点击事件
|
||||
private var mItemClickListener: LineItemClickListener? = null
|
||||
|
||||
private val middleCOlor =ResourcesUtils.getColor(R.color.biz_routing_2eacff)
|
||||
private val allCOlor =ResourcesUtils.getColor(R.color.color_FFFFFF)
|
||||
|
||||
fun setDataList(dataList: List<GrayLineBean>) {
|
||||
|
||||
if (this.mData == dataList) {
|
||||
// 如果新旧列表一致,则直接返回
|
||||
return
|
||||
@@ -51,10 +61,39 @@ class RoutingItemAdapter(
|
||||
val currentPosition = holder.bindingAdapterPosition
|
||||
val routing = mData[currentPosition]
|
||||
AutoSizeCompat.autoConvertDensityOfGlobal(holder.itemView.resources)
|
||||
|
||||
holder.routingId.text = "${routing.lineId}"
|
||||
holder.routingName.text = routing.lineName
|
||||
holder.todayVerifyNum.text = "今日验证:${routing.carVerificationCount}次"
|
||||
holder.routingEndName.text = "往${routing.endSite?.siteName?:""}方向"
|
||||
val startName = routing.startSite?.siteName ?: ""
|
||||
val endName = routing.endSite?.siteName ?: ""
|
||||
if(routing.allStation.isNullOrEmpty()||routing.allStation?.size==2){
|
||||
holder.routingEndName.text = "${startName} - ${endName}"
|
||||
}else{
|
||||
routing.allStation?.let {
|
||||
val middleStationSize = it.size-2
|
||||
val spannableString = SpannableString("${startName} - ${middleStationSize}站 - ${endName}")
|
||||
// 设置不同颜色范围
|
||||
spannableString.setSpan(
|
||||
ForegroundColorSpan(allCOlor),
|
||||
0, startName.length+2, // 从索引0开始的前4个字符
|
||||
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
|
||||
);
|
||||
|
||||
spannableString.setSpan(
|
||||
ForegroundColorSpan(middleCOlor),
|
||||
startName.length+3, startName.length+5, // 索引5-9的字符
|
||||
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
|
||||
);
|
||||
|
||||
spannableString.setSpan(
|
||||
ForegroundColorSpan(allCOlor),
|
||||
startName.length+6, spannableString.length, // 索引10-14的字符
|
||||
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
|
||||
)
|
||||
holder.routingEndName.text = spannableString
|
||||
}
|
||||
|
||||
}
|
||||
holder.historyVerifyNumEnableNum.text = "${routing.lineSuccessCount}可用"
|
||||
holder.historyVerifyNumDisenableNum.text = "${routing.lineFailCount}不可用"
|
||||
//设置item点击事件
|
||||
@@ -71,7 +110,14 @@ class RoutingItemAdapter(
|
||||
mItemClickListener = itemClickListener
|
||||
}
|
||||
|
||||
fun upDateInfo(grayLineBean: GrayLineBean, data: SitesInfo) {
|
||||
grayLineBean.allStation = data.data?.toMutableList()
|
||||
val indexOf = mData.indexOf(grayLineBean)
|
||||
notifyItemChanged(indexOf)
|
||||
}
|
||||
|
||||
class RoutingItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
||||
val routingId: AppCompatTextView = itemView.findViewById(R.id.actv_routing_id)//线路名称
|
||||
val routingName: AppCompatTextView = itemView.findViewById(R.id.actv_routing_name)//线路名称
|
||||
val todayVerifyNum: AppCompatTextView = itemView.findViewById(R.id.actv_today_verify_num) //终点
|
||||
val routingEndName: AppCompatTextView = itemView.findViewById(R.id.actv_routing_end_name) //终点站点名称
|
||||
|
||||
@@ -6,19 +6,28 @@ import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.mogo.eagle.core.function.call.och.CallerEagleBaseFunctionCall4OchManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.biz.routing.bean.GrayLineBean
|
||||
import com.mogo.och.biz.routing.bean.QueryGrayContrailListRsp
|
||||
import com.mogo.och.biz.routing.bean.QuerySitesReasons
|
||||
import com.mogo.och.biz.routing.bean.SitesInfo
|
||||
import com.mogo.och.biz.routing.bean.StartGrayAndQueryContrailRsp
|
||||
import com.mogo.och.biz.routing.net.RoutingServiceManager
|
||||
import com.mogo.och.bridge.autopilot.line.LineManager
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.data.bean.LineInfo
|
||||
import com.mogo.och.common.module.biz.birdge.BridgeManager
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusManager
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.network.OchCommonNet
|
||||
import io.reactivex.Observer
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
|
||||
/**
|
||||
* @author XuXinChao
|
||||
@@ -38,6 +47,34 @@ class RoutingSelectModel : ViewModel() {
|
||||
|
||||
}
|
||||
|
||||
fun queryStationList(grayLineBean: GrayLineBean) {
|
||||
val request = QuerySitesReasons(grayLineBean.lineId?:0,
|
||||
LoginStatusManager.getOchBizInfo()?.businessType?:11)
|
||||
RoutingServiceManager.querySiteListByList(request)
|
||||
.flatMap(OchCommonNet("queryBusRoutes",false))
|
||||
?.subscribeOn(Schedulers.io())
|
||||
?.observeOn(AndroidSchedulers.mainThread())
|
||||
?.subscribe(object : Observer<SitesInfo> {
|
||||
override fun onSubscribe(d: Disposable) {
|
||||
d(TAG, "queryBusRoutes onSubscribe")
|
||||
}
|
||||
|
||||
override fun onError(e: Throwable) {
|
||||
e.printStackTrace()
|
||||
OchChainLogManager.writeChainLogError("查询站点错误","灰度信息${grayLineBean}")
|
||||
}
|
||||
|
||||
override fun onComplete() {
|
||||
d(TAG, "queryBusRoutes onComplete")
|
||||
}
|
||||
|
||||
override fun onNext(data: SitesInfo) {
|
||||
viewCallback?.updateAdapter(grayLineBean,data)
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询灰度路线
|
||||
*/
|
||||
@@ -204,6 +241,8 @@ class RoutingSelectModel : ViewModel() {
|
||||
*/
|
||||
fun onStartGrayTaskAndQueryContrailFailed(errorStr: String)
|
||||
|
||||
fun updateAdapter(grayLineBean: GrayLineBean, data: SitesInfo)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,19 +9,22 @@ import android.view.View
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.findViewTreeViewModelStoreOwner
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.utilcode.kotlin.onClick
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.view.SpacesItemDecoration
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.biz.R
|
||||
import com.mogo.och.biz.routing.bean.GrayLineBean
|
||||
import com.mogo.och.biz.routing.bean.SitesInfo
|
||||
import com.mogo.och.biz.routing.bean.StartGrayAndQueryContrailRsp
|
||||
import com.mogo.och.common.module.wigets.WrapContentLinearLayoutManager
|
||||
import com.mogo.och.biz.routing.ui.RoutingSwitchModel
|
||||
import com.mogo.och.biz.routing.ui.routingselect.RoutingSelectModel.SwtichRoutingViewCallback
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.common.module.utils.ResourcesUtils
|
||||
import kotlinx.android.synthetic.main.biz_taxi_select.view.aciv_refresh_task
|
||||
import kotlinx.android.synthetic.main.biz_taxi_select.view.include_empty
|
||||
import kotlinx.android.synthetic.main.biz_taxi_select.view.include_error
|
||||
@@ -84,6 +87,28 @@ class RoutingSelectView: ConstraintLayout, SwtichRoutingViewCallback {
|
||||
viewModel?.startGrayTaskAndQueryRoutingContrail(data.contrailId!!,data)
|
||||
}
|
||||
})
|
||||
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)
|
||||
|| AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)
|
||||
|| AppIdentityModeUtils.isScheduled(FunctionBuildConfig.appIdentityMode)
|
||||
) {
|
||||
switch_routing_rv.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
|
||||
super.onScrollStateChanged(recyclerView, newState)
|
||||
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
|
||||
val layoutManager = recyclerView.layoutManager as LinearLayoutManager
|
||||
val firstVisible = layoutManager.findFirstVisibleItemPosition()
|
||||
val lastVisible = layoutManager.findLastVisibleItemPosition()
|
||||
// 获取所有可见Item
|
||||
(firstVisible..lastVisible).map { position ->
|
||||
val grayLineBean = mRoutingLineList[position]
|
||||
if (grayLineBean.allStation.isNullOrEmpty()) {
|
||||
viewModel?.queryStationList(grayLineBean)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
aciv_refresh_task.onClick {
|
||||
viewModel?.queryRoutingGrayLineList()
|
||||
@@ -152,6 +177,16 @@ class RoutingSelectView: ConstraintLayout, SwtichRoutingViewCallback {
|
||||
|
||||
override fun onQueryRoutingGrayLineListSuccess(data: MutableList<GrayLineBean>) {
|
||||
onRoutingGrayLineListChanged(data)
|
||||
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)
|
||||
||AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)
|
||||
||AppIdentityModeUtils.isScheduled(FunctionBuildConfig.appIdentityMode)
|
||||
) {
|
||||
data.forEachIndexed { index, grayLineBean ->
|
||||
if (index < 3) {
|
||||
viewModel?.queryStationList(grayLineBean)
|
||||
}
|
||||
}
|
||||
}
|
||||
cancleAni()
|
||||
}
|
||||
|
||||
@@ -168,6 +203,10 @@ class RoutingSelectView: ConstraintLayout, SwtichRoutingViewCallback {
|
||||
swtichViewModel?.showRoutingSelectView()
|
||||
}
|
||||
|
||||
override fun updateAdapter(grayLineBean: GrayLineBean, data: SitesInfo) {
|
||||
mChooseLineListAdapter.upDateInfo(grayLineBean,data)
|
||||
}
|
||||
|
||||
private fun cancleAni(){
|
||||
val endTime = System.currentTimeMillis()
|
||||
val dex = (1000-(endTime - animatorStart)).takeIf { it>=0 }?:0
|
||||
|
||||
@@ -8,14 +8,14 @@
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/actv_routing_name"
|
||||
android:id="@+id/actv_routing_id"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_30"
|
||||
android:layout_marginTop="@dimen/dp_26"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/dp_40"
|
||||
tools:text="灰度路线11111111"
|
||||
tools:text="3741"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="end"
|
||||
app:layout_constraintEnd_toStartOf="@+id/actv_today_verify_num"
|
||||
@@ -24,23 +24,38 @@
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/actv_today_verify_num"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/actv_routing_id"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/actv_routing_id"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginEnd="@dimen/dp_40"
|
||||
android:layout_marginTop="@dimen/dp_31"
|
||||
android:layout_marginEnd="@dimen/dp_27"
|
||||
android:textColor="@color/biz_routing_CCFFFFFF"
|
||||
android:textSize="@dimen/dp_32"
|
||||
android:textSize="@dimen/dp_30"
|
||||
tools:text="今日验证:2次"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/actv_routing_name"
|
||||
app:layout_constraintTop_toBottomOf="@+id/actv_routing_id"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="@+id/actv_today_verify_num"
|
||||
android:layout_marginStart="@dimen/dp_30"
|
||||
android:layout_marginTop="@dimen/dp_12"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/dp_36"
|
||||
tools:text="线路名称"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="end"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/actv_routing_end_name"
|
||||
app:layout_constraintTop_toBottomOf="@+id/actv_routing_name"
|
||||
app:layout_constraintStart_toStartOf="@+id/actv_routing_name"
|
||||
android:layout_marginTop="@dimen/dp_12"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/dp_32"
|
||||
android:textSize="@dimen/dp_30"
|
||||
tools:text="往AAAA方向"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
@@ -54,7 +54,9 @@ object ThirdDeviceData {
|
||||
ShuttleVoiceManager.leave200Distance(message)
|
||||
}
|
||||
}else{
|
||||
ShuttleVoiceManager.leave200Distance(end.introduction)
|
||||
end.introduction?.let {
|
||||
ShuttleVoiceManager.leave200Distance(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user