Browse Source

列表停止后,发送已读

liuzhenxing1118 2 years ago
parent
commit
7f83b9393a

+ 2 - 2
app/src/main/java/com/xplora/xpchat/activity/PagerActivity.java

@@ -934,9 +934,9 @@ public class PagerActivity extends BaseActivity implements Listener.PlayListener
 
     // =============================== DB ==============================
     @Override
-    public void onScrollVisibleItem(int firstVisibleItem, int visibleItemCount) {
+    public void onScrollVisibleItem(ArrayList<Integer> arrayList) {
         new Thread(()->{
-            for (int i = firstVisibleItem; i < firstVisibleItem + visibleItemCount; i++) {
+            for (Integer i : arrayList) {
                 MessageBean bean = DataManager.instance().getMessageBean(i);
                 if (bean == null)
                     continue;

+ 27 - 12
app/src/main/java/com/xplora/xpchat/fragment/ChatListFragment.java

@@ -1,17 +1,12 @@
 package com.xplora.xpchat.fragment;
 
-import android.os.Handler;
-import android.os.Message;
 import android.content.Context;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.LayoutInflater;
-import android.view.MotionEvent;
 import android.view.View;
 import android.widget.AbsListView;
-import android.widget.Button;
 import android.widget.FrameLayout;
-import android.widget.LinearLayout;
 import android.widget.ListView;
 import android.widget.TextView;
 
@@ -23,14 +18,11 @@ import com.xplora.xpchat.adapter.ChatListAdapter;
 import com.xplora.xpchat.manager.DataManager;
 import com.xplora.xpchat.model.MessageBean;
 import com.xplora.xpchat.observer.Listener;
-import com.xplora.xpchat.utils.Constant;
 import com.xplora.xpchat.utils.ResUtils;
 import com.xplora.xpchat.view.ChatItem;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Timer;
-import java.util.TimerTask;
 
 public class ChatListFragment extends FrameLayout implements SwipeRefreshLayout.OnRefreshListener, AbsListView.OnScrollListener {
     public String TAG = "losion / xpchat :" +  getClass().getSimpleName();
@@ -39,6 +31,7 @@ public class ChatListFragment extends FrameLayout implements SwipeRefreshLayout.
     private ChatListAdapter mChatAdapter = null;
     private SwipeRefreshLayout mSwipeRefreshLayout = null;
     private Context mContext = null;
+    private ArrayList<Integer> mReadItemIdArray = new ArrayList<>();
 
     public ChatListFragment(Context context, @Nullable AttributeSet attrs) {
         super(context, attrs);
@@ -161,13 +154,35 @@ public class ChatListFragment extends FrameLayout implements SwipeRefreshLayout.
 
     @Override
     public void onScrollStateChanged(AbsListView view, int scrollState) {
-
+        Log.d(TAG, "onScrollStateChanged: " + scrollState);
+        switch (scrollState) {
+            case 1:
+                //开始滚动
+                mReadItemIdArray.clear();
+                break;
+            case 2:
+                //滚动中
+                break;
+            case 0:
+                //滚动停止
+                if (mReadItemIdArray.size() <= 0)
+                    return;
+                Listener.ListViewListener listener = (Listener.ListViewListener)mContext;
+                listener.onScrollVisibleItem(mReadItemIdArray);
+                break;
+            default:
+                break;
+        }
     }
 
     @Override
     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
-        Log.d(TAG, "onScroll: " + firstVisibleItem + "  vis:" + visibleItemCount + " total:" +totalItemCount );
-        Listener.ListViewListener listener = (Listener.ListViewListener)mContext;
-        listener.onScrollVisibleItem(firstVisibleItem, visibleItemCount);
+        Log.d(TAG, "onScroll: " + firstVisibleItem + "  vis:" + visibleItemCount + " total:" + totalItemCount );
+        for (int i = firstVisibleItem; i < firstVisibleItem + visibleItemCount; i++) {
+            boolean isContains = mReadItemIdArray.contains(i);
+            if (!isContains) {
+                mReadItemIdArray.add(i);
+            }
+        }
     }
 }

+ 3 - 1
app/src/main/java/com/xplora/xpchat/observer/Listener.java

@@ -2,6 +2,8 @@ package com.xplora.xpchat.observer;
 
 import com.xplora.xpchat.model.MessageBean;
 
+import java.util.ArrayList;
+
 public class Listener {
 
     public interface PlayListener {
@@ -33,7 +35,7 @@ public class Listener {
 
     public interface ListViewListener {
         void onLoadOldMessages();
-        void onScrollVisibleItem(int firstVisibleItem, int visibleItemCount);
+        void onScrollVisibleItem(ArrayList<Integer> arrayList);
         void onListViewScroll();
         void onListViewScrollEnd();
         void onListViewScrollBottom();