Просмотр исходного кода

Merge branch 'feature/android_im_chat_load_more' into 'develop'

android聊天窗口下拉加载更新消息内容

See merge request o2oa/o2oa!1067
楼国栋 5 лет назад
Родитель
Сommit
606dbb0f58

+ 6 - 0
o2android/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/im/O2ChatActivity.kt

@@ -146,6 +146,10 @@ class O2ChatActivity : BaseMVPActivity<O2ChatContract.View, O2ChatContract.Prese
             finish()
         }
         //消息列表初始化
+        sr_o2_chat_message_layout.setOnRefreshListener {
+            XLog.debug("下啦零零落落零零落落来了")
+            getPageData()
+        }
         rv_o2_chat_messages.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
         rv_o2_chat_messages.adapter = adapter
         adapter.eventListener = object : O2ChatMessageAdapter.MessageEventListener {
@@ -188,6 +192,7 @@ class O2ChatActivity : BaseMVPActivity<O2ChatContract.View, O2ChatContract.Prese
 
         initListener()
 
+        sr_o2_chat_message_layout.isRefreshing = true
         getPageData()
 
         //录音格式
@@ -389,6 +394,7 @@ class O2ChatActivity : BaseMVPActivity<O2ChatContract.View, O2ChatContract.Prese
     }
 
     override fun backPageMessages(list: List<IMMessage>) {
+        sr_o2_chat_message_layout.isRefreshing = false
         if (list.isNotEmpty()) {
             page++
             adapter.addPageMessage(list)

+ 10 - 2
o2android/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/im/fm/O2IMConversationPresenter.kt

@@ -72,10 +72,18 @@ class O2IMConversationPresenter : BasePresenterImpl<O2IMConversationContract.Vie
         val service = getMessageCommunicateService(mView?.getContext())
         service?.let {
             it.myConversationList().subscribeOn(Schedulers.io())
+                    .flatMap { res ->
+                        val list = res.data
+                        if ( list != null && list.isNotEmpty()) {
+                            val newList = list.sortedByDescending { c -> c.lastMessage?.createTime  }
+                            Observable.just(newList)
+                        }else {
+                            Observable.just(ArrayList())
+                        }
+                    }
                     .observeOn(AndroidSchedulers.mainThread())
                     .o2Subscribe {
-                        onNext { res->
-                            val list = res.data
+                        onNext { list->
                             if (list != null) {
                                 mView?.myConversationList(list)
                             }else{

+ 11 - 4
o2android/app/src/main/res/layout/activity_o2_chat.xml

@@ -10,14 +10,21 @@
 
     <include layout="@layout/snippet_appbarlayout_toolbar" />
 
-    <android.support.v7.widget.RecyclerView
-        android:id="@+id/rv_o2_chat_messages"
+    <android.support.v4.widget.SwipeRefreshLayout
+        android:id="@+id/sr_o2_chat_message_layout"
         android:layout_width="match_parent"
         android:layout_height="0dp"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintBottom_toTopOf="@+id/ll_o2_chat_input_layout"
-        app:layout_constraintTop_toBottomOf="@+id/app_bar_layout_snippet" />
+        app:layout_constraintTop_toBottomOf="@+id/app_bar_layout_snippet">
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/rv_o2_chat_messages"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            />
+    </android.support.v4.widget.SwipeRefreshLayout>
+
 
     <net.zoneland.x.bpm.mobile.v1.zoneXBPM.widgets.KeyboardLayout
         android:id="@+id/rv_o2_chat_emoji_box_out"
@@ -37,7 +44,7 @@
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/rv_o2_chat_messages"
+        app:layout_constraintTop_toBottomOf="@+id/sr_o2_chat_message_layout"
         android:orientation="vertical">
         <LinearLayout
             android:layout_width="match_parent"