فهرست منبع

修复消息会话页面部分问题

Pq 2 سال پیش
والد
کامیت
f01831a376

+ 36 - 0
BaseLibrary/src/main/java/com/cooleshow/base/widgets/WrapContentLinearLayoutManager.java

@@ -0,0 +1,36 @@
+package com.cooleshow.base.widgets;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+/**
+ * Author by pq, Date on 2022/11/11.
+ */
+public class WrapContentLinearLayoutManager extends LinearLayoutManager {
+
+
+    public WrapContentLinearLayoutManager(Context context) {
+        super(context);
+    }
+
+    public WrapContentLinearLayoutManager(Context context, int orientation, boolean reverseLayout) {
+        super(context, orientation, reverseLayout);
+    }
+
+    public WrapContentLinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    @Override
+    public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
+        try {
+            //解决类似java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 157(offset:157).state:588
+            super.onLayoutChildren(recycler, state);
+        } catch (IndexOutOfBoundsException e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 2 - 1
rong_im/kit/src/main/java/io/rong/imkit/conversationlist/ConversationListFragment.java

@@ -47,6 +47,7 @@ import io.rong.imkit.conversationlist.model.GatheredConversation;
 import io.rong.imkit.conversationlist.viewmodel.ConversationListViewModel;
 import io.rong.imkit.event.Event;
 import io.rong.imkit.model.NoticeContent;
+import io.rong.imkit.picture.decoration.WrapContentLinearLayoutManager;
 import io.rong.imkit.utils.RouteUtils;
 import io.rong.imkit.widget.adapter.BaseAdapter;
 import io.rong.imkit.widget.adapter.ViewHolder;
@@ -106,7 +107,7 @@ public class ConversationListFragment extends Fragment implements BaseAdapter.On
         mRefreshLayout = view.findViewById(R.id.rc_refresh);
 
         mAdapter.setItemClickListener(this);
-        mLayoutManager = new LinearLayoutManager(getActivity());
+        mLayoutManager = new WrapContentLinearLayoutManager(getActivity());
         mList.setLayoutManager(mLayoutManager);
         mList.setAdapter(mAdapter);