From 4de82f1cba82b4fb7a68c5d12cad32abfcbacb28 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 12 Jan 2023 18:29:32 +0800 Subject: [PATCH] =?UTF-8?q?[2.13.2]=E6=B6=88=E6=81=AF=E7=9B=92=E5=AD=90V2X?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B1=87=E6=80=BB=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/DriverMsgBoxBubbleAdapter.kt | 177 +++++---- .../msgbox/adapter/DriverMsgBoxListAdapter.kt | 343 ++++++++++-------- .../adapter/PassengerMsgBoxBubbleAdapter.kt | 135 ++++--- .../adapter/PassengerMsgBoxListAdapter.kt | 132 ++++--- .../main/res/layout/item_msg_box_summary.xml | 61 ++++ .../layout/item_passenger_msg_box_summary.xml | 83 +++++ .../item_passenger_msg_list_summary.xml | 78 ++++ 7 files changed, 664 insertions(+), 345 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_summary.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_passenger_msg_box_summary.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_passenger_msg_list_summary.xml diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt index e6917eee75..e7b7342600 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt @@ -33,6 +33,7 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A private val notice: Int = 2 private val v2x: Int = 3 private val report: Int = 4 + private val summary: Int = 5 var countDownTimer: CountDownTimer?=null private var changeViewListener: ChangeViewListener?=null @@ -46,91 +47,107 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - if(viewType == operation){ - val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_operation,parent,false) - return BubbleOperationHolder(view) - }else if(viewType == report){ - val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_report,parent,false) - return BubbleReportHolder(view) - }else if(viewType == notice){ - val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_notice,parent,false) - return BubbleNoticeHolder(view) - }else{ - val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_v2x,parent,false) - return BubbleV2XHolder(view) + when (viewType) { + operation -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_operation,parent,false) + return BubbleOperationHolder(view) + } + report -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_report,parent,false) + return BubbleReportHolder(view) + } + notice -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_notice,parent,false) + return BubbleNoticeHolder(view) + } + summary -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_box_summary,parent,false) + return BubbleSummaryHolder(view) + } + else -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_v2x,parent,false) + return BubbleV2XHolder(view) + } } } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - if(holder is BubbleOperationHolder){ - data?.let { - val operationMsg = it[position].bean as OperationMsg - holder.tvBubbleOperationTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) - holder.tvBubbleOperationContent.text = operationMsg.content - } - }else if(holder is BubbleReportHolder){ - data?.let { - val reportEntity = it[position].bean as ReportEntity - holder.tvBubbleReportTime.text = "时间:${TimeUtils.millis2String(it[position].timestamp)}" - holder.tvBubbleReceiveTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) - var resultStr = "类型:" - for (result in reportEntity.resultList){ - resultStr = "${resultStr}${CallerAutoPilotManager.getReportResultDesc(result)}" + when (holder) { + is BubbleOperationHolder -> { + data?.let { + val operationMsg = it[position].bean as OperationMsg + holder.tvBubbleOperationTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvBubbleOperationContent.text = operationMsg.content } - holder.tvBubbleReportType.text = resultStr } - }else if(holder is BubbleNoticeHolder){ - data?.let { - val msgBoxBean = it[position].bean - val noticeFrCloudMsg = msgBoxBean as NoticeFrCloudMsg - if(noticeFrCloudMsg.type == 0){ - val noticeNormalData = noticeFrCloudMsg.noticeNormalData - holder.tvNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) - holder.tvNoticeContent.text = noticeNormalData?.content - GlideApp.with(activity).load(noticeNormalData?.imageUrl).optionalTransform( - GlideRoundedCornersTransform( - 20f, - GlideRoundedCornersTransform.CornerType.ALL - ) - ).into(holder.ivNoticeImage) - holder.tvNoticeCheck.setOnClickListener { - //云公告 - if (noticeNormalData != null) { - CallerHmiManager.showNoticeNormalData(noticeNormalData) - } + is BubbleReportHolder -> { + data?.let { + val reportEntity = it[position].bean as ReportEntity + holder.tvBubbleReportTime.text = "时间:${TimeUtils.millis2String(it[position].timestamp)}" + holder.tvBubbleReceiveTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + var resultStr = "类型:" + for (result in reportEntity.resultList){ + resultStr = "${resultStr}${CallerAutoPilotManager.getReportResultDesc(result)}" } - }else if(noticeFrCloudMsg.type == 1){ - val noticeTrafficStylePushData = noticeFrCloudMsg.trafficPushData - holder.tvNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) - holder.tvNoticeContent.text = noticeTrafficStylePushData?.content - GlideApp.with(activity).load(noticeTrafficStylePushData?.poiImgUrl).optionalTransform( - GlideRoundedCornersTransform( - 20f, - GlideRoundedCornersTransform.CornerType.ALL - ) - ).into(holder.ivNoticeImage) - holder.tvNoticeCheck.setOnClickListener { - //云公告 - if (noticeTrafficStylePushData != null) { - CallerHmiManager.showTrafficBanner(noticeTrafficStylePushData) + holder.tvBubbleReportType.text = resultStr + } + } + is BubbleNoticeHolder -> { + data?.let { + val msgBoxBean = it[position].bean + val noticeFrCloudMsg = msgBoxBean as NoticeFrCloudMsg + if(noticeFrCloudMsg.type == 0){ + val noticeNormalData = noticeFrCloudMsg.noticeNormalData + holder.tvNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvNoticeContent.text = noticeNormalData?.content + GlideApp.with(activity).load(noticeNormalData?.imageUrl).optionalTransform( + GlideRoundedCornersTransform( + 20f, + GlideRoundedCornersTransform.CornerType.ALL + ) + ).into(holder.ivNoticeImage) + holder.tvNoticeCheck.setOnClickListener { + //云公告 + if (noticeNormalData != null) { + CallerHmiManager.showNoticeNormalData(noticeNormalData) + } + } + }else if(noticeFrCloudMsg.type == 1){ + val noticeTrafficStylePushData = noticeFrCloudMsg.trafficPushData + holder.tvNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvNoticeContent.text = noticeTrafficStylePushData?.content + GlideApp.with(activity).load(noticeTrafficStylePushData?.poiImgUrl).optionalTransform( + GlideRoundedCornersTransform( + 20f, + GlideRoundedCornersTransform.CornerType.ALL + ) + ).into(holder.ivNoticeImage) + holder.tvNoticeCheck.setOnClickListener { + //云公告 + if (noticeTrafficStylePushData != null) { + CallerHmiManager.showTrafficBanner(noticeTrafficStylePushData) + } } } } } - }else if(holder is BubbleV2XHolder){ - data?.let { - val msgBoxBean = it[position] - val v2XMsg = msgBoxBean.bean as V2XMsg - holder.tvV2XTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) - holder.tvV2XContent.text = v2XMsg.content - if(msgBoxBean.type == MsgBoxType.OBU){ - holder.ivV2XImage.setImageDrawable(activity.resources.getDrawable( - EventTypeEnumNew.getUpdateIconRes(v2XMsg.type))) - }else{ + is BubbleV2XHolder -> { + data?.let { + val msgBoxBean = it[position] + val v2XMsg = msgBoxBean.bean as V2XMsg + holder.tvV2XTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvV2XContent.text = v2XMsg.content holder.ivV2XImage.setImageDrawable(activity.resources.getDrawable( EventTypeEnumNew.getUpdateIconRes(v2XMsg.type))) } } + is BubbleSummaryHolder -> { + data?.let { + val summaryMsg = it[position].bean as V2XMsg + holder.tvSummaryTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvSummaryContent.text = summaryMsg.content + } + } } val msgBoxBean: MsgBoxBean = data!![position] @@ -155,14 +172,16 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A override fun getItemCount() = data?.size ?: 0 override fun getItemViewType(position: Int): Int { - if(data!![position].type == MsgBoxType.OPERATION){ - return operation + return if(data!![position].type == MsgBoxType.OPERATION){ + operation }else if(data!![position].type == MsgBoxType.REPORT){ - return report + report }else if(data!![position].type == MsgBoxType.NOTICE){ - return notice - }else{ - return v2x + notice + }else if(data!![position].type == MsgBoxType.V2X && data!![position].sourceType == DataSourceType.SUMMARY){ + summary + } else{ + v2x } } @@ -195,6 +214,12 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A var tvV2XContent: TextView = itemView.findViewById(R.id.tvV2XContent) } + //汇总消息 + class BubbleSummaryHolder(itemView: View): RecyclerView.ViewHolder(itemView){ + var tvSummaryContent: TextView = itemView.findViewById(R.id.tvSummaryContent) + var tvSummaryTime: TextView = itemView.findViewById(R.id.tvSummaryTime) + } + fun setChangeListener(listener: ChangeViewListener){ changeViewListener = listener } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt index 5e02c0c918..33e58bbcc2 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt @@ -34,10 +34,9 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : RecyclerView.Ada private val operation: Int = 1 private val notice: Int = 2 private val v2x: Int = 3 - private val obu: Int = 4 private val report: Int = 5 private val record: Int = 6 - private val traffic: Int = 7 + private val summary: Int = 8 //Error val RESULT_AUTOPILOT_DISABLE = "RESULT_AUTOPILOT_DISABLE" @@ -50,177 +49,195 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : RecyclerView.Ada } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - if(viewType == record){ - val view = LayoutInflater.from(parent.context).inflate(R.layout.item_bad_case,parent,false) - return BadCaseHolder(view) - }else if(viewType == report){ - val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_box_ipc_report,parent,false) - return MsgBoxIpcReportHolder(view) - }else if(viewType == operation){ - val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_box_operation,parent,false) - return MsgBoxOperation(view) - }else if(viewType == notice){ - val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_box_notice,parent,false) - return MsgBoxNotice(view) - }else{ - val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_box_v2x,parent,false) - return MsgBoxV2X(view) + when (viewType) { + record -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_bad_case,parent,false) + return BadCaseHolder(view) + } + report -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_box_ipc_report,parent,false) + return MsgBoxIpcReportHolder(view) + } + operation -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_box_operation,parent,false) + return MsgBoxOperation(view) + } + notice -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_box_notice,parent,false) + return MsgBoxNotice(view) + } + summary -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_box_summary,parent,false) + return MsgBoxSummary(view) + } + else -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_box_v2x,parent,false) + return MsgBoxV2X(view) + } } } @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - if(holder is BadCaseHolder){ - data?.let { - holder.tvBagReceiveTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) - holder.tvBagRecordTime.text = "时间:${TimeUtils.millis2String(it[position].timestamp)}" - val msgBoxBean = it[position] - holder.tvRecordCheck.setOnClickListener { - //打开被动录包弹窗 - CallerDevaToolsManager.onReceiveBadCaseRecord(msgBoxBean,activity,false) + when (holder) { + is BadCaseHolder -> { + data?.let { + holder.tvBagReceiveTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvBagRecordTime.text = "时间:${TimeUtils.millis2String(it[position].timestamp)}" + val msgBoxBean = it[position] + holder.tvRecordCheck.setOnClickListener { + //打开被动录包弹窗 + CallerDevaToolsManager.onReceiveBadCaseRecord(msgBoxBean,activity,false) + } } } - }else if(holder is MsgBoxIpcReportHolder){ - data?.let { it -> - holder.tvReportTimeNormal.text = "时间:${TimeUtils.millis2String(it[position].timestamp)}" - holder.tvReportTimeOpen.text = "时间:${TimeUtils.millis2String(it[position].timestamp)}" - val reportEntity = (it[position].bean as ReportEntity) - if(reportEntity.resultList.contains(RESULT_AUTOPILOT_DISABLE) - || reportEntity.resultList.contains(RESULT_AUTOPILOT_SYSTEM_UNSTARTED) - || reportEntity.resultList.contains(RESULT_REMOTEPILOT_DISABLE)){ - //Error - holder.ivReportImageNormal.setImageDrawable(getDrawable(R.drawable.icon_report_error_normal)) - holder.ivReportImageOpen.setImageDrawable(getDrawable(R.drawable.icon_report_error_open)) - holder.tvReportLevelNormal.text = "Error" - holder.tvReportLevelOpen.text = "Error" - }else{ - //Warning - holder.ivReportImageNormal.setImageDrawable(getDrawable(R.drawable.icon_report_warning_normal)) - holder.ivReportImageOpen.setImageDrawable(getDrawable(R.drawable.icon_report_warning_open)) - holder.tvReportLevelNormal.text = "Warning" - holder.tvReportLevelOpen.text = "Warning" - } - holder.tvReportTimeNormal.text = "时间:${TimeUtils.millis2String(it[position].timestamp)}" - holder.tvReportTimeOpen.text = "时间:${TimeUtils.millis2String(it[position].timestamp)}" - holder.tvReportTime.text =TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) - var resultStr = "类型:" - for (result in reportEntity.resultList){ - resultStr = "${resultStr}${CallerAutoPilotManager.getReportResultDesc(result)}" - } - holder.tvReportTypeNormal.text = resultStr - holder.tvReportTypeOpen.text = resultStr - holder.tvReportReasonOpen.text = "原因:${reportEntity.msg}" - var actionStr = "" - for (action in reportEntity.actionsList){ - actionStr = "${actionStr}${CallerAutoPilotManager.getReportActionDesc(action)}" - } - holder.tvReportActionOpen.text = "建议操作:$actionStr" - holder.tvStatusSelect.setOnClickListener { - if(holder.tvReportLevelNormal.isVisible){ - holder.tvStatusSelect.setCompoundDrawablesWithIntrinsicBounds(getDrawable(R.drawable.icon_msg_close),null,null,null) - holder.ivReportImageNormal.visibility = View.GONE - holder.tvReportLevelNormal.visibility = View.GONE - holder.tvReportTimeNormal.visibility = View.GONE - holder.tvReportTypeNormal.visibility = View.GONE - - holder.ivReportImageOpen.visibility = View.VISIBLE - holder.tvReportLevelOpen.visibility = View.VISIBLE - holder.tvReportTimeOpen.visibility = View.VISIBLE - holder.tvReportTypeOpen.visibility = View.VISIBLE - holder.tvReportReasonOpen.visibility = View.VISIBLE - holder.tvReportActionOpen.visibility = View.VISIBLE + is MsgBoxIpcReportHolder -> { + data?.let { it -> + holder.tvReportTimeNormal.text = "时间:${TimeUtils.millis2String(it[position].timestamp)}" + holder.tvReportTimeOpen.text = "时间:${TimeUtils.millis2String(it[position].timestamp)}" + val reportEntity = (it[position].bean as ReportEntity) + if(reportEntity.resultList.contains(RESULT_AUTOPILOT_DISABLE) + || reportEntity.resultList.contains(RESULT_AUTOPILOT_SYSTEM_UNSTARTED) + || reportEntity.resultList.contains(RESULT_REMOTEPILOT_DISABLE)){ + //Error + holder.ivReportImageNormal.setImageDrawable(getDrawable(R.drawable.icon_report_error_normal)) + holder.ivReportImageOpen.setImageDrawable(getDrawable(R.drawable.icon_report_error_open)) + holder.tvReportLevelNormal.text = "Error" + holder.tvReportLevelOpen.text = "Error" }else{ - holder.tvStatusSelect.setCompoundDrawablesWithIntrinsicBounds(getDrawable(R.drawable.icon_msg_open),null,null,null) - holder.ivReportImageNormal.visibility = View.VISIBLE - holder.tvReportLevelNormal.visibility = View.VISIBLE - holder.tvReportTimeNormal.visibility = View.VISIBLE - holder.tvReportTypeNormal.visibility = View.VISIBLE + //Warning + holder.ivReportImageNormal.setImageDrawable(getDrawable(R.drawable.icon_report_warning_normal)) + holder.ivReportImageOpen.setImageDrawable(getDrawable(R.drawable.icon_report_warning_open)) + holder.tvReportLevelNormal.text = "Warning" + holder.tvReportLevelOpen.text = "Warning" + } + holder.tvReportTimeNormal.text = "时间:${TimeUtils.millis2String(it[position].timestamp)}" + holder.tvReportTimeOpen.text = "时间:${TimeUtils.millis2String(it[position].timestamp)}" + holder.tvReportTime.text =TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + var resultStr = "类型:" + for (result in reportEntity.resultList){ + resultStr = "${resultStr}${CallerAutoPilotManager.getReportResultDesc(result)}" + } + holder.tvReportTypeNormal.text = resultStr + holder.tvReportTypeOpen.text = resultStr + holder.tvReportReasonOpen.text = "原因:${reportEntity.msg}" + var actionStr = "" + for (action in reportEntity.actionsList){ + actionStr = "${actionStr}${CallerAutoPilotManager.getReportActionDesc(action)}" + } + holder.tvReportActionOpen.text = "建议操作:$actionStr" + holder.tvStatusSelect.setOnClickListener { + if(holder.tvReportLevelNormal.isVisible){ + holder.tvStatusSelect.setCompoundDrawablesWithIntrinsicBounds(getDrawable(R.drawable.icon_msg_close),null,null,null) + holder.ivReportImageNormal.visibility = View.GONE + holder.tvReportLevelNormal.visibility = View.GONE + holder.tvReportTimeNormal.visibility = View.GONE + holder.tvReportTypeNormal.visibility = View.GONE - holder.ivReportImageOpen.visibility = View.GONE - holder.tvReportLevelOpen.visibility = View.GONE - holder.tvReportTimeOpen.visibility = View.GONE - holder.tvReportTypeOpen.visibility = View.GONE - holder.tvReportReasonOpen.visibility = View.GONE - holder.tvReportActionOpen.visibility = View.GONE + holder.ivReportImageOpen.visibility = View.VISIBLE + holder.tvReportLevelOpen.visibility = View.VISIBLE + holder.tvReportTimeOpen.visibility = View.VISIBLE + holder.tvReportTypeOpen.visibility = View.VISIBLE + holder.tvReportReasonOpen.visibility = View.VISIBLE + holder.tvReportActionOpen.visibility = View.VISIBLE + }else{ + holder.tvStatusSelect.setCompoundDrawablesWithIntrinsicBounds(getDrawable(R.drawable.icon_msg_open),null,null,null) + holder.ivReportImageNormal.visibility = View.VISIBLE + holder.tvReportLevelNormal.visibility = View.VISIBLE + holder.tvReportTimeNormal.visibility = View.VISIBLE + holder.tvReportTypeNormal.visibility = View.VISIBLE + + holder.ivReportImageOpen.visibility = View.GONE + holder.tvReportLevelOpen.visibility = View.GONE + holder.tvReportTimeOpen.visibility = View.GONE + holder.tvReportTypeOpen.visibility = View.GONE + holder.tvReportReasonOpen.visibility = View.GONE + holder.tvReportActionOpen.visibility = View.GONE + } } } } - }else if(holder is MsgBoxOperation){ - data?.let { - val operationMsg = it[position].bean as OperationMsg - holder.tvOperationContentNormal.text = operationMsg.content - holder.tvOperationContentOpen.text = operationMsg.content - holder.tvOperationTime.text = TimeUtils.millis2String(operationMsg.timestamp,getHourMinFormat()) - holder.tvOperationStatusSelect.setOnClickListener { - if(holder.ivOperationImageNormal.isVisible){ - holder.tvOperationStatusSelect.setCompoundDrawablesWithIntrinsicBounds(getDrawable(R.drawable.icon_msg_close),null,null,null) - holder.ivOperationImageNormal.visibility = View.GONE - holder.tvOperationTitleNormal.visibility = View.GONE - holder.tvOperationContentNormal.visibility = View.GONE + is MsgBoxOperation -> { + data?.let { + val operationMsg = it[position].bean as OperationMsg + holder.tvOperationContentNormal.text = operationMsg.content + holder.tvOperationContentOpen.text = operationMsg.content + holder.tvOperationTime.text = TimeUtils.millis2String(operationMsg.timestamp,getHourMinFormat()) + holder.tvOperationStatusSelect.setOnClickListener { + if(holder.ivOperationImageNormal.isVisible){ + holder.tvOperationStatusSelect.setCompoundDrawablesWithIntrinsicBounds(getDrawable(R.drawable.icon_msg_close),null,null,null) + holder.ivOperationImageNormal.visibility = View.GONE + holder.tvOperationTitleNormal.visibility = View.GONE + holder.tvOperationContentNormal.visibility = View.GONE - holder.ivOperationImageOpen.visibility = View.VISIBLE - holder.tvOperationTitleOpen.visibility = View.VISIBLE - holder.tvOperationContentOpen.visibility = View.VISIBLE - }else{ - holder.tvOperationStatusSelect.setCompoundDrawablesWithIntrinsicBounds(getDrawable(R.drawable.icon_msg_open),null,null,null) - holder.ivOperationImageNormal.visibility = View.VISIBLE - holder.tvOperationTitleNormal.visibility = View.VISIBLE - holder.tvOperationContentNormal.visibility = View.VISIBLE + holder.ivOperationImageOpen.visibility = View.VISIBLE + holder.tvOperationTitleOpen.visibility = View.VISIBLE + holder.tvOperationContentOpen.visibility = View.VISIBLE + }else{ + holder.tvOperationStatusSelect.setCompoundDrawablesWithIntrinsicBounds(getDrawable(R.drawable.icon_msg_open),null,null,null) + holder.ivOperationImageNormal.visibility = View.VISIBLE + holder.tvOperationTitleNormal.visibility = View.VISIBLE + holder.tvOperationContentNormal.visibility = View.VISIBLE - holder.ivOperationImageOpen.visibility = View.GONE - holder.tvOperationTitleOpen.visibility = View.GONE - holder.tvOperationContentOpen.visibility = View.GONE + holder.ivOperationImageOpen.visibility = View.GONE + holder.tvOperationTitleOpen.visibility = View.GONE + holder.tvOperationContentOpen.visibility = View.GONE + } } } } - }else if(holder is MsgBoxNotice){ - data?.let { - val noticeFrCloudMsg = it[position].bean as NoticeFrCloudMsg - if(noticeFrCloudMsg.type == 0){ - val noticeNormalData = noticeFrCloudMsg.noticeNormalData - holder.tvNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) - holder.tvNoticeContent.text = noticeNormalData?.content - GlideApp.with(activity).load(noticeNormalData?.imageUrl).optionalTransform( - GlideRoundedCornersTransform( - 20f, - GlideRoundedCornersTransform.CornerType.ALL - ) - ).into(holder.ivNoticeImage) - holder.tvNoticeCheck.setOnClickListener { - //云公告 - noticeNormalData?.let { it1 -> CallerHmiManager.showNoticeNormalData(it1) } + is MsgBoxNotice -> { + data?.let { + val noticeFrCloudMsg = it[position].bean as NoticeFrCloudMsg + if(noticeFrCloudMsg.type == 0){ + val noticeNormalData = noticeFrCloudMsg.noticeNormalData + holder.tvNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvNoticeContent.text = noticeNormalData?.content + GlideApp.with(activity).load(noticeNormalData?.imageUrl).optionalTransform( + GlideRoundedCornersTransform( + 20f, + GlideRoundedCornersTransform.CornerType.ALL + ) + ).into(holder.ivNoticeImage) + holder.tvNoticeCheck.setOnClickListener { + //云公告 + noticeNormalData?.let { it1 -> CallerHmiManager.showNoticeNormalData(it1) } + } + }else if(noticeFrCloudMsg.type == 1){ + val noticeTrafficStylePushData = noticeFrCloudMsg.trafficPushData + holder.tvNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvNoticeContent.text = noticeTrafficStylePushData?.content + GlideApp.with(activity).load(noticeTrafficStylePushData?.poiImgUrl).optionalTransform( + GlideRoundedCornersTransform( + 20f, + GlideRoundedCornersTransform.CornerType.ALL + ) + ).into(holder.ivNoticeImage) + holder.tvNoticeCheck.setOnClickListener { + //云公告 + noticeTrafficStylePushData?.let { it1 -> CallerHmiManager.showTrafficBanner(it1) } + } } - }else if(noticeFrCloudMsg.type == 1){ - val noticeTrafficStylePushData = noticeFrCloudMsg.trafficPushData - holder.tvNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) - holder.tvNoticeContent.text = noticeTrafficStylePushData?.content - GlideApp.with(activity).load(noticeTrafficStylePushData?.poiImgUrl).optionalTransform( - GlideRoundedCornersTransform( - 20f, - GlideRoundedCornersTransform.CornerType.ALL - ) - ).into(holder.ivNoticeImage) - holder.tvNoticeCheck.setOnClickListener { - //云公告 - noticeTrafficStylePushData?.let { it1 -> CallerHmiManager.showTrafficBanner(it1) } - } - } + } } - }else if(holder is MsgBoxV2X){ - data?.let { - val msgBoxBean = it[position] - val v2XMsg = msgBoxBean.bean as V2XMsg - holder.tvV2XTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) - holder.tvV2XContent.text = v2XMsg.content - if(msgBoxBean.type == MsgBoxType.OBU){ - holder.ivV2XImage.setImageDrawable(activity.resources.getDrawable( - EventTypeEnumNew.getUpdateIconRes(v2XMsg.type))) - }else{ + is MsgBoxV2X -> { + data?.let { + val msgBoxBean = it[position] + val v2XMsg = msgBoxBean.bean as V2XMsg + holder.tvV2XTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvV2XContent.text = v2XMsg.content holder.ivV2XImage.setImageDrawable(activity.resources.getDrawable( EventTypeEnumNew.getUpdateIconRes(v2XMsg.type))) } } + is MsgBoxSummary -> { + data?.let { + val summaryMsg = it[position].bean as V2XMsg + holder.tvSummaryTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvSummaryContent.text = summaryMsg.content + } + } } } @@ -228,15 +245,19 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : RecyclerView.Ada override fun getItemViewType(position: Int): Int { - return when(data!![position].type){ - MsgBoxType.OPERATION -> operation - MsgBoxType.NOTICE -> notice - MsgBoxType.V2X -> v2x - MsgBoxType.OBU -> obu - MsgBoxType.REPORT -> report - MsgBoxType.RECORD -> record - MsgBoxType.TRAFFIC -> traffic - } + return if(data!![position].type == MsgBoxType.OPERATION){ + operation + }else if(data!![position].type == MsgBoxType.NOTICE){ + notice + }else if(data!![position].type == MsgBoxType.V2X && data!![position].sourceType == DataSourceType.SUMMARY){ + summary + }else if(data!![position].type == MsgBoxType.REPORT){ + report + }else if(data!![position].type == MsgBoxType.RECORD){ + record + }else{ + v2x + } } //录包实体 @@ -290,5 +311,11 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : RecyclerView.Ada var tvV2XContent: TextView = itemView.findViewById(R.id.tvV2XContent) } + //汇总消息 + class MsgBoxSummary(itemView: View): RecyclerView.ViewHolder(itemView){ + var tvSummaryContent: TextView = itemView.findViewById(R.id.tvSummaryContent) + var tvSummaryTime: TextView = itemView.findViewById(R.id.tvSummaryTime) + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/PassengerMsgBoxBubbleAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/PassengerMsgBoxBubbleAdapter.kt index 08ebe71499..364411654e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/PassengerMsgBoxBubbleAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/PassengerMsgBoxBubbleAdapter.kt @@ -9,12 +9,8 @@ import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.mogo.eagle.core.data.enums.EventTypeEnumNew -import com.mogo.eagle.core.data.msgbox.MsgBoxBean -import com.mogo.eagle.core.data.msgbox.MsgBoxType -import com.mogo.eagle.core.data.msgbox.NoticeFrCloudMsg -import com.mogo.eagle.core.data.msgbox.V2XMsg +import com.mogo.eagle.core.data.msgbox.* import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp -import com.mogo.eagle.core.data.notice.NoticeNormalData import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.function.hmi.R @@ -33,6 +29,7 @@ class PassengerMsgBoxBubbleAdapter(private val activity: Activity): RecyclerView private val notice: Int = 1 private val v2x: Int = 2 + private val summary: Int = 3 var countDownTimer: CountDownTimer?=null @@ -45,65 +42,82 @@ class PassengerMsgBoxBubbleAdapter(private val activity: Activity): RecyclerView } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - if(viewType == notice){ - val view = LayoutInflater.from(parent.context).inflate(R.layout.item_passenger_msg_box_notice,parent,false) - return BubbleNoticeHolder(view) - }else{ - val view = LayoutInflater.from(parent.context).inflate(R.layout.item_passenger_msg_box_v2x,parent,false) - return BubbleV2XHolder(view) + return when (viewType) { + notice -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_passenger_msg_box_notice,parent,false) + BubbleNoticeHolder(view) + } + summary -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_passenger_msg_box_summary,parent,false) + BubbleSummaryHolder(view) + } + else -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_passenger_msg_box_v2x,parent,false) + BubbleV2XHolder(view) + } } } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - if(holder is BubbleNoticeHolder){ - data?.let { - val noticeFrCloudMsg = it[position].bean as NoticeFrCloudMsg - if(noticeFrCloudMsg.type == 0){ - val noticeNormalData = noticeFrCloudMsg.noticeNormalData - holder.tvPassengerNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) - holder.tvPassengerNoticeContent.text = noticeNormalData?.content - GlideApp.with(activity).load(noticeNormalData?.imageUrl).optionalTransform( - GlideRoundedCornersTransform( - 20f, - GlideRoundedCornersTransform.CornerType.ALL - ) - ).into(holder.ivPassengerNoticeImage) - holder.tvPassengerNoticeCheck.setOnClickListener { - //云公告 - noticeNormalData?.let { it1 -> CallerHmiManager.showNoticeNormalData(it1) } + when (holder) { + is BubbleNoticeHolder -> { + data?.let { + val noticeFrCloudMsg = it[position].bean as NoticeFrCloudMsg + if(noticeFrCloudMsg.type == 0){ + val noticeNormalData = noticeFrCloudMsg.noticeNormalData + holder.tvPassengerNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvPassengerNoticeContent.text = noticeNormalData?.content + GlideApp.with(activity).load(noticeNormalData?.imageUrl).optionalTransform( + GlideRoundedCornersTransform( + 20f, + GlideRoundedCornersTransform.CornerType.ALL + ) + ).into(holder.ivPassengerNoticeImage) + holder.tvPassengerNoticeCheck.setOnClickListener { + //云公告 + noticeNormalData?.let { it1 -> CallerHmiManager.showNoticeNormalData(it1) } + } + }else if(noticeFrCloudMsg.type == 1){ + val noticeTrafficStylePushData = noticeFrCloudMsg.trafficPushData + holder.tvPassengerNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvPassengerNoticeContent.text = noticeTrafficStylePushData?.content + GlideApp.with(activity).load(noticeTrafficStylePushData?.poiImgUrl).optionalTransform( + GlideRoundedCornersTransform( + 20f, + GlideRoundedCornersTransform.CornerType.ALL + ) + ).into(holder.ivPassengerNoticeImage) + holder.tvPassengerNoticeCheck.setOnClickListener { + //云公告 + noticeTrafficStylePushData?.let { it1 -> CallerHmiManager.showTrafficBanner(it1) } + } } - }else if(noticeFrCloudMsg.type == 1){ - val noticeTrafficStylePushData = noticeFrCloudMsg.trafficPushData - holder.tvPassengerNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) - holder.tvPassengerNoticeContent.text = noticeTrafficStylePushData?.content - GlideApp.with(activity).load(noticeTrafficStylePushData?.poiImgUrl).optionalTransform( - GlideRoundedCornersTransform( - 20f, - GlideRoundedCornersTransform.CornerType.ALL - ) - ).into(holder.ivPassengerNoticeImage) - holder.tvPassengerNoticeCheck.setOnClickListener { - //云公告 - noticeTrafficStylePushData?.let { it1 -> CallerHmiManager.showTrafficBanner(it1) } - } - } + } } - }else if(holder is BubbleV2XHolder){ - data?.let { - val msgBoxBean = it[position] - val v2XMsg = msgBoxBean.bean as V2XMsg - holder.tvPassengerV2XTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) - holder.tvPassengerV2XContent.text = v2XMsg.content - if(msgBoxBean.type == MsgBoxType.OBU){ - holder.ivPassengerV2XImage.setImageDrawable(activity.resources.getDrawable( - EventTypeEnumNew.getUpdateIconRes(v2XMsg.type))) - }else{ + is BubbleV2XHolder -> { + data?.let { + val msgBoxBean = it[position] + val v2XMsg = msgBoxBean.bean as V2XMsg + holder.tvPassengerV2XTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvPassengerV2XContent.text = v2XMsg.content holder.ivPassengerV2XImage.setImageDrawable(activity.resources.getDrawable( EventTypeEnumNew.getUpdateIconRes(v2XMsg.type))) } } + is BubbleSummaryHolder -> { + data?.let { + val summaryMsg= it[position].bean as V2XMsg + holder.tvPassengerSummaryTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvPassengerSummaryContent.text = summaryMsg.content + holder.tvPassengerSummaryCheck.setOnClickListener { + //跳转全览模式 + CallerHmiManager.showSmallFragment() + } + } + } } + val msgBoxBean: MsgBoxBean = data!![position] countDownTimer =object: CountDownTimer(CallerMsgBoxManager.getDismissTime(),1000){ override fun onTick(p0: Long) { @@ -124,10 +138,12 @@ class PassengerMsgBoxBubbleAdapter(private val activity: Activity): RecyclerView override fun getItemCount() = data?.size ?: 0 override fun getItemViewType(position: Int): Int { - if(data!![position].type == MsgBoxType.NOTICE){ - return notice - }else{ - return v2x + return if(data!![position].type == MsgBoxType.NOTICE){ + notice + }else if(data!![position].type == MsgBoxType.V2X && data!![position].sourceType == DataSourceType.SUMMARY){ + summary + } else{ + v2x } } @@ -147,4 +163,11 @@ class PassengerMsgBoxBubbleAdapter(private val activity: Activity): RecyclerView var tvPassengerV2XContent: TextView = itemView.findViewById(R.id.tvPassengerV2XContent) } + //汇总消息 + class BubbleSummaryHolder(itemView: View): RecyclerView.ViewHolder(itemView){ + var tvPassengerSummaryContent: TextView = itemView.findViewById(R.id.tvPassengerSummaryContent) + var tvPassengerSummaryCheck: TextView = itemView.findViewById(R.id.tvPassengerSummaryCheck) + var tvPassengerSummaryTime: TextView = itemView.findViewById(R.id.tvPassengerSummaryTime) + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/PassengerMsgBoxListAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/PassengerMsgBoxListAdapter.kt index 4c1b79d4b0..18c9695682 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/PassengerMsgBoxListAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/PassengerMsgBoxListAdapter.kt @@ -8,11 +8,7 @@ import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.mogo.eagle.core.data.enums.EventTypeEnumNew -import com.mogo.eagle.core.data.msgbox.MsgBoxBean -import com.mogo.eagle.core.data.msgbox.MsgBoxType -import com.mogo.eagle.core.data.msgbox.NoticeFrCloudMsg -import com.mogo.eagle.core.data.msgbox.V2XMsg -import com.mogo.eagle.core.data.notice.NoticeNormalData +import com.mogo.eagle.core.data.msgbox.* import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp @@ -31,6 +27,7 @@ class PassengerMsgBoxListAdapter(private val activity: Activity): RecyclerView.A private val notice: Int = 1 private val v2x: Int = 2 + private val summary: Int = 3 fun setData(data: List){ this.data = data @@ -38,73 +35,91 @@ class PassengerMsgBoxListAdapter(private val activity: Activity): RecyclerView.A } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - return if(viewType == notice){ - val view = LayoutInflater.from(parent.context).inflate(R.layout.item_passenger_msg_list_notice,parent,false) - ListNoticeHolder(view) - }else{ - val view = LayoutInflater.from(parent.context).inflate(R.layout.item_passenger_msg_list_v2x,parent,false) - ListV2XHolder(view) + return when (viewType) { + notice -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_passenger_msg_list_notice,parent,false) + ListNoticeHolder(view) + } + summary -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_passenger_msg_list_summary,parent,false) + ListSummaryHolder(view) + } + else -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_passenger_msg_list_v2x,parent,false) + ListV2XHolder(view) + } } } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - if(holder is ListNoticeHolder){ - data?.let { - val noticeFrCloudMsg = it[position].bean as NoticeFrCloudMsg - if(noticeFrCloudMsg.type == 0){ - val noticeNormalData = noticeFrCloudMsg.noticeNormalData - holder.tvPassengerNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) - holder.tvPassengerNoticeContent.text = noticeNormalData?.content - GlideApp.with(activity).load(noticeNormalData?.imageUrl).optionalTransform( - GlideRoundedCornersTransform( - 20f, - GlideRoundedCornersTransform.CornerType.ALL - ) - ).into(holder.ivPassengerNoticeImage) - holder.tvPassengerNoticeCheck.setOnClickListener { - //云公告 - noticeNormalData?.let { it1 -> CallerHmiManager.showNoticeNormalData(it1) } - } - }else if(noticeFrCloudMsg.type == 1){ - val noticeTrafficStylePushData = noticeFrCloudMsg.trafficPushData - holder.tvPassengerNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) - holder.tvPassengerNoticeContent.text = noticeTrafficStylePushData?.content - GlideApp.with(activity).load(noticeTrafficStylePushData?.poiImgUrl).optionalTransform( - GlideRoundedCornersTransform( - 20f, - GlideRoundedCornersTransform.CornerType.ALL - ) - ).into(holder.ivPassengerNoticeImage) - holder.tvPassengerNoticeCheck.setOnClickListener { - //云公告 - noticeTrafficStylePushData?.let { it1 -> CallerHmiManager.showTrafficBanner(it1) } + when (holder) { + is ListNoticeHolder -> { + data?.let { + val noticeFrCloudMsg = it[position].bean as NoticeFrCloudMsg + if(noticeFrCloudMsg.type == 0){ + val noticeNormalData = noticeFrCloudMsg.noticeNormalData + holder.tvPassengerNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvPassengerNoticeContent.text = noticeNormalData?.content + GlideApp.with(activity).load(noticeNormalData?.imageUrl).optionalTransform( + GlideRoundedCornersTransform( + 20f, + GlideRoundedCornersTransform.CornerType.ALL + ) + ).into(holder.ivPassengerNoticeImage) + holder.tvPassengerNoticeCheck.setOnClickListener { + //云公告 + noticeNormalData?.let { it1 -> CallerHmiManager.showNoticeNormalData(it1) } + } + }else if(noticeFrCloudMsg.type == 1){ + val noticeTrafficStylePushData = noticeFrCloudMsg.trafficPushData + holder.tvPassengerNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvPassengerNoticeContent.text = noticeTrafficStylePushData?.content + GlideApp.with(activity).load(noticeTrafficStylePushData?.poiImgUrl).optionalTransform( + GlideRoundedCornersTransform( + 20f, + GlideRoundedCornersTransform.CornerType.ALL + ) + ).into(holder.ivPassengerNoticeImage) + holder.tvPassengerNoticeCheck.setOnClickListener { + //云公告 + noticeTrafficStylePushData?.let { it1 -> CallerHmiManager.showTrafficBanner(it1) } + } } } } - }else if(holder is ListV2XHolder){ - data?.let { - val msgBoxBean = it[position] - val v2XMsg = msgBoxBean.bean as V2XMsg - holder.tvPassengerV2XTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) - holder.tvPassengerV2XContent.text = v2XMsg.content - if(msgBoxBean.type == MsgBoxType.OBU){ - holder.ivPassengerV2XImage.setImageDrawable(activity.resources.getDrawable( - EventTypeEnumNew.getUpdateIconRes(v2XMsg.type))) - }else{ + is ListV2XHolder -> { + data?.let { + val msgBoxBean = it[position] + val v2XMsg = msgBoxBean.bean as V2XMsg + holder.tvPassengerV2XTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvPassengerV2XContent.text = v2XMsg.content holder.ivPassengerV2XImage.setImageDrawable(activity.resources.getDrawable( EventTypeEnumNew.getUpdateIconRes(v2XMsg.type))) } } + is ListSummaryHolder -> { + data?.let { + val summaryMsg= it[position].bean as V2XMsg + holder.tvPassengerSummaryTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvPassengerSummaryContent.text = summaryMsg.content + holder.tvPassengerSummaryCheck.setOnClickListener { + //跳转全览模式 + CallerHmiManager.showSmallFragment() + } + } + } } } override fun getItemCount() = data?.size ?: 0 override fun getItemViewType(position: Int): Int { - if(data!![position].type == MsgBoxType.NOTICE){ - return notice - }else{ - return v2x + return if(data!![position].type == MsgBoxType.NOTICE){ + notice + }else if(data!![position].type == MsgBoxType.V2X && data!![position].sourceType == DataSourceType.SUMMARY){ + summary + } else{ + v2x } } @@ -124,4 +139,11 @@ class PassengerMsgBoxListAdapter(private val activity: Activity): RecyclerView.A var tvPassengerV2XContent: TextView = itemView.findViewById(R.id.tvPassengerV2XContent) } + //汇总消息 + class ListSummaryHolder(itemView: View): RecyclerView.ViewHolder(itemView){ + var tvPassengerSummaryContent: TextView = itemView.findViewById(R.id.tvPassengerSummaryContent) + var tvPassengerSummaryCheck: TextView = itemView.findViewById(R.id.tvPassengerSummaryCheck) + var tvPassengerSummaryTime: TextView = itemView.findViewById(R.id.tvPassengerSummaryTime) + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_summary.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_summary.xml new file mode 100644 index 0000000000..2d252d4743 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_summary.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_passenger_msg_box_summary.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_passenger_msg_box_summary.xml new file mode 100644 index 0000000000..3c58b979c0 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_passenger_msg_box_summary.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_passenger_msg_list_summary.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_passenger_msg_list_summary.xml new file mode 100644 index 0000000000..964715f577 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_passenger_msg_list_summary.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file