Browse Source

[공통][Bug] 인디케이터 인덱스 새로운 참조 생기는 버그 수정함

Hasemi 6 năm trước cách đây
mục cha
commit
1a17973546

+ 8 - 10
app/src/main/java/kr/co/zumo/app/lifeplus/view/custom/category/banner/MainBannerView.java

@@ -5,8 +5,8 @@ import android.support.constraint.ConstraintLayout;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.view.LayoutInflater;
+import android.view.View;
 
 import java.util.List;
 
@@ -32,6 +32,7 @@ public class MainBannerView extends ConstraintLayout {
   private MainBannerAdapter mainBannerAdapter;
   private RecyclerView recyclerView;
   private CustomIndicator customIndicator;
+  private View view;
 
   public MainBannerView(Context context) {
     super(context);
@@ -48,12 +49,14 @@ public class MainBannerView extends ConstraintLayout {
   public void init(Context context, List<? extends IImageTitleBean> textImageBeanList, IEventListener listener, boolean isDimLayerEnabled) {
 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-    inflater.inflate(R.layout.main_banner_view, this);
-    customIndicator = findViewById(R.id.custom_indicator);
-    recyclerView = findViewById(R.id.recycler_view_main_banner_view);
+    view = inflater.inflate(R.layout.main_banner_view, this);
+
+    customIndicator = view.findViewById(R.id.custom_indicator);
+    recyclerView = view.findViewById(R.id.recycler_view_main_banner_view);
     CustomPagerSnapHelper snapHelper = new CustomPagerSnapHelper();
     recyclerView.setNestedScrollingEnabled(false);
 
+
     LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) {
       @Override
       protected int getExtraLayoutSpace(RecyclerView.State state) {
@@ -83,17 +86,12 @@ public class MainBannerView extends ConstraintLayout {
     recyclerView.setAdapter(mainBannerAdapter);
   }
 
-  public void doIndicatorInitialization() {
-    Log.e("APP#  MainBannerView | doIndicatorInitialization", "|" + "==== >");
-    customIndicator.onChangedIndex(0);
-
-  }
-
   public void dispose() {
     recyclerView.setLayoutManager(null);
     recyclerView.setAdapter(null);
     recyclerView = null;
     mainBannerAdapter = null;
+    this.removeAllViews();
     customIndicator = null;
   }
 }

+ 0 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/category/type1/FirstCategoryMainBannerViewHolder.java

@@ -46,7 +46,6 @@ public class FirstCategoryMainBannerViewHolder extends CategoryMainViewHolder<Ca
   @Override
   public void detach() {
     if (null != mainBannerViewFirstCategory) {
-      mainBannerViewFirstCategory.doIndicatorInitialization();
       mainBannerViewFirstCategory.dispose();
       mainBannerViewFirstCategory = null;
     }

+ 4 - 9
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/CustomIndicator.java

@@ -7,7 +7,6 @@ import android.graphics.Paint;
 import android.support.annotation.Nullable;
 import android.support.v7.widget.RecyclerView;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.view.MotionEvent;
 import android.view.View;
 
@@ -50,6 +49,7 @@ public class CustomIndicator extends View {
   private float indicatorTotalWidth;
   private float indicatorStartX;
   private int itemCount;
+  private boolean isDispose;
 
   private static final float DP = Resources.getSystem().getDisplayMetrics().density;
   private final int mIndicatorHeight = (int) (DP * 16);
@@ -71,8 +71,8 @@ public class CustomIndicator extends View {
   }
 
   public void onChangedIndex(int firstVisibleItemPosition) {
-    this.activePosition = firstVisibleItemPosition;
-    this.invalidate();
+    activePosition = firstVisibleItemPosition;
+    invalidate();
   }
 
   @Override
@@ -80,7 +80,6 @@ public class CustomIndicator extends View {
     if (null == recyclerView || null == recyclerView.getAdapter()) {
       return;
     }
-    Log.e("APP#  CustomIndicator | onDraw", "|");
 
     itemCount = recyclerView.getAdapter().getItemCount();
     totalLength = mIndicatorItemLength * itemCount;
@@ -127,21 +126,17 @@ public class CustomIndicator extends View {
 
   @Override
   public boolean onTouchEvent(MotionEvent event) {
-    Log.e("APP#  CustomIndicator | onTouchEvent", "|" + "==== > ");
     if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_DOWN) {
       return true;
     }
+
     else if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP) {
       float itemWidth = mIndicatorItemLength + mIndicatorItemPadding;
-      Log.e("APP#  CustomIndicator | onTouchEvent", "|" + itemWidth + " , " + indicatorStartX); //48, 516 (index 1) // 48 , 0
       int index = (int) Math.floor((event.getX() - indicatorStartX) / itemWidth); //인디케이터 안에서 찍힌 x 좌표
-      Log.e("APP#  CustomIndicator | onTouchEvent", "index |" + index);
       if (index >= 0 && index < itemCount) {
         listener.onEvent(new Event.Builder(Event.CLICK).index((int) index).build());
       }
-      //return true;
     }
-
     return super.onTouchEvent(event);
   }
 }