| 
					
				 | 
			
			
				@@ -5,6 +5,7 @@ import android.os.Bundle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.os.Handler; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.os.Looper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.text.TextUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import android.util.Log; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.view.LayoutInflater; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.view.View; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.view.ViewGroup; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -17,6 +18,7 @@ import com.cooleshow.base.constanst.LoginStatusConstants; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.cooleshow.base.event.LoginStatusEvent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.cooleshow.base.router.RouterPath; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.cooleshow.base.utils.LogUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.cooleshow.base.widgets.TopSmoothScroller; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.greenrobot.eventbus.EventBus; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.greenrobot.eventbus.Subscribe; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -76,11 +78,14 @@ public class ConversationListFragment extends Fragment implements BaseAdapter.On 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private ConversationListViewModel mConversationListViewModel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     protected SmartRefreshLayout mRefreshLayout; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     protected Handler mHandler = new Handler(Looper.getMainLooper()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private LinearLayoutManager mLayoutManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         mAdapter = onResolveAdapter(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private int targetUnReadPos = -1;//未读会话位置标记 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void onCreate(@Nullable Bundle savedInstanceState) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         super.onCreate(savedInstanceState); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -101,8 +106,8 @@ public class ConversationListFragment extends Fragment implements BaseAdapter.On 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         mRefreshLayout = view.findViewById(R.id.rc_refresh); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         mAdapter.setItemClickListener(this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        mList.setLayoutManager(layoutManager); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mLayoutManager = new LinearLayoutManager(getActivity()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mList.setLayoutManager(mLayoutManager); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         mList.setAdapter(mAdapter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         mNoticeContainerView = view.findViewById(R.id.rc_conversationlist_notice_container); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -142,12 +147,12 @@ public class ConversationListFragment extends Fragment implements BaseAdapter.On 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 onConversationListRefresh(refreshLayout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        mRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            public void onLoadMore(@NonNull RefreshLayout refreshLayout) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                onConversationListLoadMore(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        mRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            public void onLoadMore(@NonNull RefreshLayout refreshLayout) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                onConversationListLoadMore(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -188,6 +193,7 @@ public class ConversationListFragment extends Fragment implements BaseAdapter.On 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             public void onChanged(List<BaseUiConversation> uiConversations) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 RLog.d(TAG, "conversation list onChanged."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                targetUnReadPos = -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 mAdapter.setDataCollection(uiConversations); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -229,6 +235,49 @@ public class ConversationListFragment extends Fragment implements BaseAdapter.On 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void findUnReadConversation() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<BaseUiConversation> data = mAdapter.getData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (data != null && data.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int firstUnreadPos = -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (int i = 0; i < data.size(); i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                BaseUiConversation baseUiConversation = data.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (baseUiConversation.mCore != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    int unreadMessageCount = baseUiConversation.mCore.getUnreadMessageCount(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (unreadMessageCount != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (firstUnreadPos == -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            firstUnreadPos = i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (i != targetUnReadPos && i > targetUnReadPos) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            targetUnReadPos = i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (i == data.size() - 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            //如果遍历到最后一条,就返回第一条未读会话的位置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            targetUnReadPos = firstUnreadPos; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        scrollToPosition(targetUnReadPos); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void scrollToPosition(int pos) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (mLayoutManager != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<BaseUiConversation> data = mAdapter.getData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (data != null && data.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (pos < 0 || pos >= data.size()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    pos = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Log.i("pq", "result pos:" + pos); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                final TopSmoothScroller mScroller = new TopSmoothScroller(getActivity()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                mScroller.setTargetPosition(pos); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                mLayoutManager.startSmoothScroll(mScroller); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 会话列表点击事件回调 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 
			 |