Răsfoiți Sursa

fix: 会话列表点击问题

wutiaorong 1 an în urmă
părinte
comite
a983c3117e

+ 4 - 3
frame/imkit/src/main/java/com/adealink/frame/imkit/conversation/messagelist/provider/MessageClickType.kt

@@ -19,7 +19,8 @@ object MessageClickType {
 /** 会话各个点击事件标记类,所有 sdk 的消息,点击事件从 -1 开始定义方便与用户定义的区分  */
 object ConversationClickType {
     const val USER_PORTRAIT_CLICK: Int = -1
-    const val PIN_CLICK: Int = -2
-    const val READ_CLICK: Int = -3
-    const val DELETE_CLICK: Int = -4
+    const val CONTENT_CLICK: Int = -2
+    const val PIN_CLICK: Int = -3
+    const val READ_CLICK: Int = -4
+    const val DELETE_CLICK: Int = -5
 }

+ 4 - 0
frame/imkit/src/main/java/com/adealink/frame/imkit/conversationlist/provider/BaseConversationProvider.kt

@@ -87,6 +87,10 @@ open class BaseConversationProvider : IViewProvider<BaseUiConversation> {
                 conversationContent?.setCompoundDrawables(drawable, null, null, null)
             }
         }
+        holder.setOnClickListener(R.id.im_conversation_item_content_cl) {
+            listener?.onViewClick(ConversationClickType.CONTENT_CLICK, uiConversation)
+        }
+
         holder.setText(
             R.id.im_conversation_content,
             uiConversation.mConversationContent,

+ 1 - 0
frame/imkit/src/main/res/layout/im_conversationlist_item.xml

@@ -7,6 +7,7 @@
     android:layout_height="@dimen/im_conversation_item_height">
 
     <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/im_conversation_item_content_cl"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 

+ 20 - 26
module/message/src/main/java/com/adealink/weparty/message/conversationlist/ConversationListFragment.kt

@@ -32,7 +32,7 @@ import com.scwang.smart.refresh.layout.constant.RefreshState
 import com.scwang.smart.refresh.layout.simple.SimpleMultiListener
 
 @RouterUri(path = [Message.Conversation.LIST], desc = "会话列表")
-class ConversationListFragment: BaseFragment(R.layout.fragment_conversationlist), BaseAdapter.OnItemClickListener,
+class ConversationListFragment: BaseFragment(R.layout.fragment_conversationlist),
     IViewProviderListener<BaseUiConversation> {
     val binding by viewBinding(FragmentConversationlistBinding::bind)
     private var adapter: ConversationListAdapter = ConversationListAdapter(this)
@@ -42,7 +42,6 @@ class ConversationListFragment: BaseFragment(R.layout.fragment_conversationlist)
 
     override fun initViews() {
         super.initViews()
-        adapter.setItemClickListener(this)
         val layoutManager: LinearLayoutManager = FixedLinearLayoutManager(
             activity
         )
@@ -155,32 +154,27 @@ class ConversationListFragment: BaseFragment(R.layout.fragment_conversationlist)
         )
     }
 
-    override fun onItemClick(view: View, holder: ViewHolder, position: Int) {
-        if(position < 0 || position >= adapter.data.size) {
-            return
-        }
-        val baseUiConversation: BaseUiConversation = adapter.getItem(position)
-        val conversationIdentifier = baseUiConversation.conversationIdentifier ?: return
-        val targetId = conversationIdentifier.targetId.toLongOrNull() ?: return
-        val act = activity ?: return
-        Router.build(act, Message.Conversation.PATH)
-            .putExtra(Message.Common.EXTRA_TO_UID, targetId)
-            .putExtra(Message.Common.EXTRA_CONVERSATION_TYPE, conversationIdentifier.type.value)
-            .start()
-    }
-
-    override fun onItemLongClick(view: View, holder: ViewHolder, position: Int): Boolean {
-        return false
-    }
-
 
     override fun onViewClick(clickType: Int, data: BaseUiConversation) {
-        if (clickType == ConversationClickType.USER_PORTRAIT_CLICK) {
-            onUserPortraitClick(data)
-        } else if (clickType == ConversationClickType.DELETE_CLICK) {
-            onDeleteClick(data)
-        } else {
-            conversationListViewModel.onViewClick(clickType, data)
+        when (clickType) {
+            ConversationClickType.CONTENT_CLICK -> {
+                val conversationIdentifier = data.conversationIdentifier ?: return
+                val targetId = conversationIdentifier.targetId.toLongOrNull() ?: return
+                val act = activity ?: return
+                Router.build(act, Message.Conversation.PATH)
+                    .putExtra(Message.Common.EXTRA_TO_UID, targetId)
+                    .putExtra(Message.Common.EXTRA_CONVERSATION_TYPE, conversationIdentifier.type.value)
+                    .start()
+            }
+            ConversationClickType.USER_PORTRAIT_CLICK -> {
+                onUserPortraitClick(data)
+            }
+            ConversationClickType.DELETE_CLICK -> {
+                onDeleteClick(data)
+            }
+            else -> {
+                conversationListViewModel.onViewClick(clickType, data)
+            }
         }
     }