From bba4b34ebf38542b8ae1030a048936e8f58196ef Mon Sep 17 00:00:00 2001 From: xuxinchao <13522809046@163.com> Date: Tue, 7 Jun 2022 16:47:40 +0800 Subject: [PATCH] fix bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复RecyclerView异常:java.lang.IndexOutOfBoundsException: Inconsistency detected --- .../hmi/ui/setting/IPCReportWindow.kt | 2 +- .../hmi/ui/setting/ReportListFloatWindow.kt | 2 +- .../setting/WrapContentLinearLayoutManager.kt | 36 +++++++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/WrapContentLinearLayoutManager.kt diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/IPCReportWindow.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/IPCReportWindow.kt index efc5ef32be..aa4f8277a3 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/IPCReportWindow.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/IPCReportWindow.kt @@ -55,7 +55,7 @@ class IPCReportWindow constructor(activity: Activity) : View.OnTouchListener{ it.alpha = 0.9f } ipcReportAdapter = IPCReportAdapter() - rvIPCReport.layoutManager = LinearLayoutManager(mActivity, + rvIPCReport.layoutManager = WrapContentLinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL,false) rvIPCReport.adapter = ipcReportAdapter diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ReportListFloatWindow.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ReportListFloatWindow.kt index f14472f33c..b758d7ffd1 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ReportListFloatWindow.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ReportListFloatWindow.kt @@ -50,7 +50,7 @@ class ReportListFloatWindow constructor(activity: Activity) : View.OnTouchListen it.alpha = 0.9f } reportListAdapter= ReportListAdapter(mActivity) - rvReportList.layoutManager = LinearLayoutManager(mActivity, + rvReportList.layoutManager = WrapContentLinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL,false) rvReportList.adapter = reportListAdapter } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/WrapContentLinearLayoutManager.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/WrapContentLinearLayoutManager.kt new file mode 100644 index 0000000000..75a93e3901 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/WrapContentLinearLayoutManager.kt @@ -0,0 +1,36 @@ +package com.mogo.eagle.core.function.hmi.ui.setting + +import android.content.Context +import android.util.AttributeSet +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView + +/** + * @author XuXinChao + * @description fix java.lang.IndexOutOfBoundsException:检测到不一致。视图持有者适配器positionViewHolder无效 + * @since: 2022/6/7 + */ +class WrapContentLinearLayoutManager : LinearLayoutManager { + constructor(context: Context?) : super(context) {} + + constructor(context: Context?, orientation: Int, reverseLayout: Boolean) : super( + context, + orientation, + reverseLayout + ) {} + + constructor( + context: Context?, + attrs: AttributeSet?, + defStyleAttr: Int, + defStyleRes: Int + ) : super(context, attrs, defStyleAttr, defStyleRes) {} + + override fun onLayoutChildren(recycler: RecyclerView.Recycler?, state: RecyclerView.State?) { + try { + super.onLayoutChildren(recycler, state) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + } + } +} \ No newline at end of file