浏览代码

[공통][New] 스크롤 인덱스 변경은 recyclerView.scroll_idle 일 때 반영되도록 수정

hyodong.min 6 年之前
父节点
当前提交
6cff0ec4c7
共有 1 个文件被更改,包括 11 次插入1 次删除
  1. 11 1
      app/src/main/java/kr/co/zumo/app/lifeplus/view/IndexScrollListener.java

+ 11 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/IndexScrollListener.java

@@ -3,6 +3,7 @@
  */
 package kr.co.zumo.app.lifeplus.view;
 
+import android.os.Handler;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 
@@ -21,6 +22,7 @@ public class IndexScrollListener extends RecyclerView.OnScrollListener {
   private final LinearLayoutManager layoutManager;
   private final IChangedPageIndex listener;
   private int currentPageIndex = 0;
+  private boolean changed = false;
 
   public IndexScrollListener(LinearLayoutManager layoutManager, IChangedPageIndex listener) {
     this.layoutManager = layoutManager;
@@ -29,7 +31,15 @@ public class IndexScrollListener extends RecyclerView.OnScrollListener {
 
   @Override
   public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
+    if (newState == RecyclerView.SCROLL_STATE_IDLE && changed) {
+      changed = false;
 
+      new Handler().postDelayed(() -> {
+        if (null != listener) {
+          listener.onChangedPageIndex(currentPageIndex);
+        }
+      }, 50);
+    }
   }
 
   @Override
@@ -38,7 +48,7 @@ public class IndexScrollListener extends RecyclerView.OnScrollListener {
 
     if (index > -1 && currentPageIndex != index) {
       currentPageIndex = index;
-      listener.onChangedPageIndex(currentPageIndex);
+      changed = true; // idle 일 때만 갱신
     }
   }