Explorar o código

[이벤트][New] 리스트 1개일 때 '마이 이벤트' 버튼 표시, 리팩토링

hyodong.min %!s(int64=6) %!d(string=hai) anos
pai
achega
849dac1404

+ 32 - 29
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/EventListFragment.java

@@ -31,7 +31,7 @@ import kr.co.zumo.app.lifeplus.view.screen.FragmentBase;
  */
 public class EventListFragment extends FragmentBase<EventListPresenter> implements IEventView {
   private ViewPager recyclerViewEvent;
-  private TabLayout eventTab;
+  private TabLayout eventTabIndicator;
   private ConstraintLayout layoutMyEvent;
   private EventListViewPagerAdapter adapter;
   private ConstraintLayout layoutListNone;
@@ -44,11 +44,24 @@ public class EventListFragment extends FragmentBase<EventListPresenter> implemen
   @Override
   protected void onAfterActivityCreated(Bundle savedInstanceState) {
     recyclerViewEvent = findViewById(R.id.recycler_view_event);
-    eventTab = findViewById(R.id.tab_layout_event);
+    eventTabIndicator = findViewById(R.id.tab_layout_event);
     layoutListNone = findViewById(R.id.layout_list_none);
     layoutMyEvent = findViewById(R.id.layout_my_event);
 
     layoutMyEvent.setOnClickListener(view -> {presenter.onEvent(new Event.Builder(Event.MY_EVENT).build());});
+
+    recyclerViewEvent.setClipToPadding(false);
+    recyclerViewEvent.setPageMargin(ResourceUtil.dpToPx(15));
+    recyclerViewEvent.setPadding(ResourceUtil.dpToPx(25), 0, ResourceUtil.dpToPx(25), 0);
+    recyclerViewEvent.setOffscreenPageLimit(10);
+    eventTabIndicator.setupWithViewPager(recyclerViewEvent, true);
+
+    recyclerViewEvent.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
+      @Override
+      public void onPageSelected(int position) {
+        presenter.onChangedIndex(position);
+      }
+    });
   }
 
   @Override
@@ -82,7 +95,6 @@ public class EventListFragment extends FragmentBase<EventListPresenter> implemen
 
   @Override
   public void draw(List<EventBean> eventBeans) {
-
     adapter = new EventListViewPagerAdapter(getActivity(), eventBeans, event -> {
       switch (event.getEventId()) {
         case Event.CLICK:
@@ -92,39 +104,30 @@ public class EventListFragment extends FragmentBase<EventListPresenter> implemen
           break;
       }
     });
-    
-    if (eventBeans.size() > 0) {
 
-      recyclerViewEvent.setVisibility(View.VISIBLE);
-      layoutListNone.setVisibility(View.GONE);
-      recyclerViewEvent.setClipToPadding(false);
-      recyclerViewEvent.setPageMargin(ResourceUtil.dpToPx(15));
-      recyclerViewEvent.setPadding(ResourceUtil.dpToPx(25), 0, ResourceUtil.dpToPx(25), 0);
-      recyclerViewEvent.setAdapter(adapter);
-      recyclerViewEvent.setOffscreenPageLimit(10);
-      eventTab.setupWithViewPager(recyclerViewEvent, true);
-      eventTab.setVisibility(eventBeans.size() == 1 ? View.GONE : View.VISIBLE);
-
-      recyclerViewEvent.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
-        @Override
-        public void onPageSelected(int position) {
-          presenter.onChangedIndex(position);
-          eventTab.setVisibility(position == eventBeans.size() - 1 && eventBeans.size() > 1 ? View.GONE : View.VISIBLE);
-        }
-      });
-    }
-    else {
-      setVisibleMyEventButton(true);
+    recyclerViewEvent.setAdapter(adapter);
+  }
+
+  @Override
+  public void setVisibleMyEventButton(boolean isVisible) {
+    layoutMyEvent.setVisibility(isVisible ? View.VISIBLE : View.GONE);
+  }
+
+  @Override
+  public void setVisibleNothing(boolean isVisible) {
+    if (isVisible) {
       recyclerViewEvent.setVisibility(View.GONE);
       layoutListNone.setVisibility(View.VISIBLE);
     }
-
-
+    else {
+      recyclerViewEvent.setVisibility(View.VISIBLE);
+      layoutListNone.setVisibility(View.GONE);
+    }
   }
 
   @Override
-  public void setVisibleMyEventButton(boolean isVisible) {
-    layoutMyEvent.setVisibility(isVisible ? View.VISIBLE : View.GONE);
+  public void setVisibleIndicator(boolean isVisible) {
+    eventTabIndicator.setVisibility(isVisible ? View.VISIBLE : View.GONE);
   }
 
   @Override

+ 19 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/EventListPresenter.java

@@ -29,7 +29,18 @@ public class EventListPresenter extends Presenter<EventListModel, IEventView> {
   }
 
   private void render() {
-    view.draw(model.getEventBeans());
+    int len = model.getEventBeans().size();
+    if (len > 0) {
+      view.setVisibleNothing(false);
+      if (len == 1) {
+        view.setVisibleMyEventButton(true);
+      }
+      view.draw(model.getEventBeans());
+    }
+    else {
+      view.setVisibleNothing(true);
+      view.setVisibleMyEventButton(true);
+    }
   }
 
   @Override
@@ -150,12 +161,18 @@ public class EventListPresenter extends Presenter<EventListModel, IEventView> {
   }
 
   public void onChangedIndex(int index) {
-    if (index == model.getEventBeans().size() - 1) {
+
+    int len = model.getEventBeans().size();
+
+    if (index == len - 1) {
+      // 인디케이터는 마지막페이지에서 숨겨준다.
       //  마지막 페이지에 마이 이벤트 버튼
       view.setVisibleMyEventButton(true);
+      view.setVisibleIndicator(false);
     }
     else {
       view.setVisibleMyEventButton(false);
+      view.setVisibleIndicator(true);
     }
   }
 }

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

@@ -21,5 +21,9 @@ public interface IEventView extends IView {
 
   void setVisibleMyEventButton(boolean isVisible);
 
+  void setVisibleNothing(boolean isVisible);
+
+  void setVisibleIndicator(boolean isVisible);
+
   void update(List<Integer> indexList);
 }