Bladeren bron

[카테고리][New] 콘텐츠 / 배너 API 적용 전

hyodong.min 7 jaren geleden
bovenliggende
commit
63a2ec7429

+ 48 - 9
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/category/CategoryMainModel.java

@@ -10,11 +10,14 @@ import java.util.ArrayList;
 import io.reactivex.disposables.Disposable;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryBannerBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryBannerResultBean;
+import kr.co.zumo.app.lifeplus.bean.api.CategoryContentsBean;
+import kr.co.zumo.app.lifeplus.bean.api.CategoryContentsResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryRecommendBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryRecommendResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryRequestBean;
 import kr.co.zumo.app.lifeplus.model.Model;
 import kr.co.zumo.app.lifeplus.model.module.APICategoryBannerLoadModule;
+import kr.co.zumo.app.lifeplus.model.module.APICategoryContentsLoadModule;
 import kr.co.zumo.app.lifeplus.model.module.APICategoryRecommendLoadModule;
 import kr.co.zumo.app.lifeplus.model.module.IAPIModuleListener;
 import kr.co.zumo.app.lifeplus.view.Event;
@@ -31,10 +34,16 @@ import kr.co.zumo.app.lifeplus.view.Event;
  */
 public class CategoryMainModel extends Model {
 
+  public static final int LOADED_RECOMMEND = 0;
+  public static final int LOADED_BANNER = 1;
+  public static final int LOADED_CONTENTS = 2;
+
   private Disposable disposableBanner;
+  private Disposable disposableContents;
   private Disposable disposableRecommend;
   private ArrayList<CategoryBannerBean> bannerBeans;
   private ArrayList<CategoryRecommendBean> recommendBeans;
+  private ArrayList<CategoryContentsBean> contentsBeans;
 
   @CallSuper
   @Override
@@ -62,6 +71,7 @@ public class CategoryMainModel extends Model {
   protected void pauseInternal() {
 
   }
+
   private void disposeLoading() {
     if (null != disposableBanner) {
       disposableBanner.dispose();
@@ -71,6 +81,10 @@ public class CategoryMainModel extends Model {
       disposableRecommend.dispose();
       disposableRecommend = null;
     }
+    if (null != disposableContents) {
+      disposableContents.dispose();
+      disposableContents = null;
+    }
   }
 
   /**
@@ -80,13 +94,38 @@ public class CategoryMainModel extends Model {
     disposeLoading();
   }
 
+  public void loadRecommendContents(String categoryNumber) {
+    disposableRecommend = new APICategoryRecommendLoadModule().call(new CategoryRequestBean(categoryNumber), new IAPIModuleListener<CategoryRecommendResultBean>() {
+      @Override
+      public void onApiSuccess(CategoryRecommendResultBean resultBean) {
+        recommendBeans = resultBean.getData();
+
+        onResult(new Event.Builder(Event.SUCCESS).index(LOADED_RECOMMEND).build());
+      }
+
+      @Override
+      public void onApiReason(CategoryRecommendResultBean resultBean) {
+        onResult(new Event.Builder(Event.ERROR).string(resultBean.getReturnMessage()).build());
+      }
+
+      @Override
+      public void onApiError(String errorMessage) {
+        onResult(new Event.Builder(Event.ERROR).string(errorMessage).build());
+      }
+    });
+  }
+
+  public ArrayList<CategoryRecommendBean> getRecommendBeans() {
+    return recommendBeans;
+  }
+
   public void loadBanner(String categoryNumber) {
     disposableBanner = new APICategoryBannerLoadModule().call(new CategoryRequestBean(categoryNumber), new IAPIModuleListener<CategoryBannerResultBean>() {
       @Override
       public void onApiSuccess(CategoryBannerResultBean resultBean) {
         bannerBeans = resultBean.getData();
 
-        onResult(new Event.Builder(Event.SUCCESS).build());
+        onResult(new Event.Builder(Event.SUCCESS).index(LOADED_BANNER).build());
       }
 
       @Override
@@ -106,17 +145,17 @@ public class CategoryMainModel extends Model {
   }
 
 
-  public void loadRecommendContents(String categoryNumber) {
-    disposableRecommend = new APICategoryRecommendLoadModule().call(new CategoryRequestBean(categoryNumber), new IAPIModuleListener<CategoryRecommendResultBean>() {
+  public void loadContents(String categoryNumber) {
+    disposableContents = new APICategoryContentsLoadModule().call(new CategoryRequestBean(categoryNumber), new IAPIModuleListener<CategoryContentsResultBean>() {
       @Override
-      public void onApiSuccess(CategoryRecommendResultBean resultBean) {
-        recommendBeans = resultBean.getData();
+      public void onApiSuccess(CategoryContentsResultBean resultBean) {
+        contentsBeans = resultBean.getData();
 
-        onResult(new Event.Builder(Event.SUCCESS).build());
+        onResult(new Event.Builder(Event.SUCCESS).index(LOADED_CONTENTS).build());
       }
 
       @Override
-      public void onApiReason(CategoryRecommendResultBean resultBean) {
+      public void onApiReason(CategoryContentsResultBean resultBean) {
         onResult(new Event.Builder(Event.ERROR).string(resultBean.getReturnMessage()).build());
       }
 
@@ -127,7 +166,7 @@ public class CategoryMainModel extends Model {
     });
   }
 
-  public ArrayList<CategoryRecommendBean> getRecommendBeans() {
-    return recommendBeans;
+  public ArrayList<CategoryContentsBean> getContents() {
+    return contentsBeans;
   }
 }

+ 2 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/category/FifthCategoryMainFragment.java

@@ -15,6 +15,7 @@ import java.util.ArrayList;
 
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryBannerBean;
+import kr.co.zumo.app.lifeplus.bean.api.CategoryContentsBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryRecommendBean;
 import kr.co.zumo.app.lifeplus.manager.ActionBarManager;
 import kr.co.zumo.app.lifeplus.manager.IActionBarListener;
@@ -92,7 +93,7 @@ public class FifthCategoryMainFragment extends FragmentBase<FifthCategoryMainPre
   }
 
   @Override
-  public void drawBanner(ArrayList<CategoryBannerBean> beans) {
+  public void drawContentsBanner(ArrayList<CategoryBannerBean> beans, ArrayList<CategoryContentsBean> contents) {
 
   }
 

+ 35 - 25
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/category/FirstCategoryMainFragment.java

@@ -6,6 +6,7 @@ import android.support.annotation.Nullable;
 import android.support.v7.app.ActionBar;
 import android.support.v7.widget.GridLayoutManager;
 import android.support.v7.widget.RecyclerView;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -14,11 +15,14 @@ import java.util.ArrayList;
 
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryBannerBean;
+import kr.co.zumo.app.lifeplus.bean.api.CategoryContentsBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryRecommendBean;
 import kr.co.zumo.app.lifeplus.manager.ActionBarManager;
 import kr.co.zumo.app.lifeplus.manager.IActionBarListener;
 import kr.co.zumo.app.lifeplus.util.ResourceUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
+import kr.co.zumo.app.lifeplus.view.custom.main.series.IMainSeriesContract;
+import kr.co.zumo.app.lifeplus.view.custom.main.series.MainSeriesPresenter;
 import kr.co.zumo.app.lifeplus.view.custom.main.series.MainSeriesView;
 import kr.co.zumo.app.lifeplus.view.screen.FragmentBase;
 
@@ -48,30 +52,6 @@ public class FirstCategoryMainFragment extends FragmentBase<FirstCategoryMainPre
     mainSeriesView = findViewById(R.id.series_image_text_view);
     recyclerViewFirstCategoryMain = findViewById(R.id.recycler_view_first_category_main);
 
-    FirstCategoryMainAdapter firstCategoryMainAdapter = new FirstCategoryMainAdapter(getActivity());
-    GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), 2);
-    gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
-      @Override
-      public int getSpanSize(int position) {
-        switch (firstCategoryMainAdapter.getItemViewType(position)) {
-          case FirstCategoryMainAdapter.GRID_VIEW_TYPE:
-            //리싸이클러뷰 영역 한개 원래대로씀
-            return 1;
-          case FirstCategoryMainAdapter.BANNER_VIEW_TYPE:
-            //리싸이클러뷰 영역 2개를 합침
-            return 2;
-          default:
-            break;
-        }
-        return 0;
-      }
-    });
-    recyclerViewFirstCategoryMain.addItemDecoration(new GridItemDecoration(getActivity(), ResourceUtil.dpToPx(4)));
-    recyclerViewFirstCategoryMain.setLayoutManager(gridLayoutManager);
-    recyclerViewFirstCategoryMain.setAdapter(firstCategoryMainAdapter);
-
-    findViewById(R.id.first_category_main_filter).setOnClickListener(view ->
-      presenter.onEvent(new Event.Builder(Event.FILTER).build()));
   }
 
   @Override
@@ -111,13 +91,43 @@ public class FirstCategoryMainFragment extends FragmentBase<FirstCategoryMainPre
   }
 
   @Override
-  public void drawBanner(ArrayList<CategoryBannerBean> beans) {
+  public void drawContentsBanner(ArrayList<CategoryBannerBean> beans, ArrayList<CategoryContentsBean> contents) {
 
+    FirstCategoryMainAdapter firstCategoryMainAdapter = new FirstCategoryMainAdapter(getActivity());
+    GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), 2);
+    gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
+      @Override
+      public int getSpanSize(int position) {
+        switch (firstCategoryMainAdapter.getItemViewType(position)) {
+          case FirstCategoryMainAdapter.GRID_VIEW_TYPE:
+            //리싸이클러뷰 영역 한개 원래대로씀
+            return 1;
+          case FirstCategoryMainAdapter.BANNER_VIEW_TYPE:
+            //리싸이클러뷰 영역 2개를 합침
+            return 2;
+          default:
+            break;
+        }
+        return 0;
+      }
+    });
+    recyclerViewFirstCategoryMain.addItemDecoration(new GridItemDecoration(getActivity(), ResourceUtil.dpToPx(4)));
+    recyclerViewFirstCategoryMain.setLayoutManager(gridLayoutManager);
+    recyclerViewFirstCategoryMain.setAdapter(firstCategoryMainAdapter);
+
+    findViewById(R.id.first_category_main_filter).setOnClickListener(view ->
+      presenter.onEvent(new Event.Builder(Event.FILTER).build()));
   }
 
   @Override
   public void drawRecommend(ArrayList<CategoryRecommendBean> beans) {
     mainSeriesView.init(getActivity(), beans, beans.size());
 
+    MainSeriesPresenter mainSeriesPresenter = new MainSeriesPresenter(mainSeriesView, new IMainSeriesContract.Listener() {
+      @Override
+      public void onClickItem(int position) {
+        Log.i("APP# FirstCategoryMainFragment | onClickItem", "|" + "position: " + position);
+      }
+    });
   }
 }

+ 13 - 16
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/category/FourthCategoryMainFragment.java

@@ -13,11 +13,10 @@ import android.view.View;
 import android.view.ViewGroup;
 
 import java.util.ArrayList;
-import java.util.List;
 
 import kr.co.zumo.app.R;
-import kr.co.zumo.app.lifeplus.bean.TextImageBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryBannerBean;
+import kr.co.zumo.app.lifeplus.bean.api.CategoryContentsBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryRecommendBean;
 import kr.co.zumo.app.lifeplus.manager.ActionBarManager;
 import kr.co.zumo.app.lifeplus.manager.IActionBarListener;
@@ -39,7 +38,6 @@ import kr.co.zumo.app.lifeplus.view.screen.FragmentBase;
  */
 public class FourthCategoryMainFragment extends FragmentBase<FourthCategoryMainPresenter> implements IFourthCategoryMainView{
 
-  private List<TextImageBean> textImageBeanList;
   private MainSeriesView mainSeriesView;
   private RecyclerView recyclerViewFourthCategoryMain;
 
@@ -52,18 +50,6 @@ public class FourthCategoryMainFragment extends FragmentBase<FourthCategoryMainP
   protected void onAfterActivityCreated(Bundle savedInstanceState) {
     mainSeriesView = findViewById(R.id.series_image_text_view);
     recyclerViewFourthCategoryMain = findViewById(R.id.recycler_view_fourth_category_main);
-
-    FourthCategoryMainAdapter fourthCategoryMainAdapter = new FourthCategoryMainAdapter(getActivity());
-    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
-    recyclerViewFourthCategoryMain.setLayoutManager(linearLayoutManager);
-    recyclerViewFourthCategoryMain.addItemDecoration(new RecyclerView.ItemDecoration() {
-      @Override
-      public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
-        super.getItemOffsets(outRect, view, parent, state);
-        outRect.bottom = ResourceUtil.dpToPx(21);
-      }
-    });
-    recyclerViewFourthCategoryMain.setAdapter(fourthCategoryMainAdapter);
   }
 
   @Override
@@ -102,8 +88,19 @@ public class FourthCategoryMainFragment extends FragmentBase<FourthCategoryMainP
   }
 
   @Override
-  public void drawBanner(ArrayList<CategoryBannerBean> beans) {
+  public void drawContentsBanner(ArrayList<CategoryBannerBean> beans, ArrayList<CategoryContentsBean> contents) {
 
+    FourthCategoryMainAdapter fourthCategoryMainAdapter = new FourthCategoryMainAdapter(getActivity());
+    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
+    recyclerViewFourthCategoryMain.setLayoutManager(linearLayoutManager);
+    recyclerViewFourthCategoryMain.addItemDecoration(new RecyclerView.ItemDecoration() {
+      @Override
+      public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
+        super.getItemOffsets(outRect, view, parent, state);
+        outRect.bottom = ResourceUtil.dpToPx(21);
+      }
+    });
+    recyclerViewFourthCategoryMain.setAdapter(fourthCategoryMainAdapter);
   }
 
   @Override

+ 26 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/category/FourthCategoryMainPresenter.java

@@ -20,15 +20,27 @@ import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
 public class FourthCategoryMainPresenter extends Presenter<FourthCategoryMainModel, IFourthCategoryMainView> {
 
   private DoubleChecker doubleChecker;
+  private DoubleChecker doubleCheckerBanner;
+  private DoubleChecker doubleCheckerContents;
 
   public FourthCategoryMainPresenter(FourthCategoryMainModel model, IFourthCategoryMainView view) {
     super(model, view);
 
     doubleChecker = new DoubleChecker(this::render);
+    doubleCheckerBanner = new DoubleChecker(this::onBannerLoaded);
+    doubleCheckerContents = new DoubleChecker(this::onContentsLoaded);
 
     init();
   }
 
+  private void onContentsLoaded() {
+    view.drawContentsBanner(model.getBannerBeans(), model.getContents());
+  }
+
+  private void onBannerLoaded() {
+    doubleCheckerContents.checkFirst();
+  }
+
   private void render() {
     view.drawRecommend(model.getRecommendBeans());
   }
@@ -37,6 +49,8 @@ public class FourthCategoryMainPresenter extends Presenter<FourthCategoryMainMod
     String categoryNumber = "4";
 //    model.loadBanner(categoryNumber);
     model.loadRecommendContents(categoryNumber);
+    model.loadContents(categoryNumber);
+    model.loadBanner(categoryNumber);
   }
 
   @Override
@@ -69,6 +83,7 @@ public class FourthCategoryMainPresenter extends Presenter<FourthCategoryMainMod
     back(ScreenID.MAIN);
     return true;
   }
+
   @Override
   protected void onEventInternal(Event event) {
 
@@ -79,8 +94,16 @@ public class FourthCategoryMainPresenter extends Presenter<FourthCategoryMainMod
 
     switch (event.getEventId()) {
       case Event.SUCCESS:
-        // recommend loading complete
-        doubleChecker.checkSecond();
+        if (event.getIndex() == CategoryMainModel.LOADED_RECOMMEND) {
+          // recommend loading complete
+          doubleChecker.checkSecond();
+        }
+        else if (event.getIndex() == CategoryMainModel.LOADED_BANNER) {
+          doubleCheckerBanner.checkSecond();
+        }
+        else if (event.getIndex() == CategoryMainModel.LOADED_CONTENTS) {
+          doubleCheckerContents.checkSecond();
+        }
         break;
       case Event.ERROR:
         showErrorDialog(event.getString());
@@ -117,5 +140,6 @@ public class FourthCategoryMainPresenter extends Presenter<FourthCategoryMainMod
   @Override
   public void onScreenReady() {
     doubleChecker.checkFirst();
+    doubleCheckerBanner.checkFirst();
   }
 }

+ 2 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/category/ICategoryMainView.java

@@ -6,6 +6,7 @@ package kr.co.zumo.app.lifeplus.view.screen.main.category;
 import java.util.ArrayList;
 
 import kr.co.zumo.app.lifeplus.bean.api.CategoryBannerBean;
+import kr.co.zumo.app.lifeplus.bean.api.CategoryContentsBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryRecommendBean;
 import kr.co.zumo.app.lifeplus.view.IView;
 
@@ -20,6 +21,6 @@ import kr.co.zumo.app.lifeplus.view.IView;
  * @since 2018. 11. 6.
  */
 public interface ICategoryMainView extends IView {
-  void drawBanner(ArrayList<CategoryBannerBean> beans);
+  void drawContentsBanner(ArrayList<CategoryBannerBean> beans, ArrayList<CategoryContentsBean> contents);
   void drawRecommend(ArrayList<CategoryRecommendBean> beans);
 }

+ 2 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/category/SecondCategoryMainFragment.java

@@ -17,6 +17,7 @@ import java.util.List;
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.bean.TextImageBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryBannerBean;
+import kr.co.zumo.app.lifeplus.bean.api.CategoryContentsBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryRecommendBean;
 import kr.co.zumo.app.lifeplus.manager.ActionBarManager;
 import kr.co.zumo.app.lifeplus.manager.IActionBarListener;
@@ -120,7 +121,7 @@ public class SecondCategoryMainFragment extends FragmentBase<SecondCategoryMainP
 
 
   @Override
-  public void drawBanner(ArrayList<CategoryBannerBean> beans) {
+  public void drawContentsBanner(ArrayList<CategoryBannerBean> beans, ArrayList<CategoryContentsBean> contents) {
 
   }
 

+ 2 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/category/ThirdCategoryMainFragment.java

@@ -17,6 +17,7 @@ import java.util.List;
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.bean.TextImageBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryBannerBean;
+import kr.co.zumo.app.lifeplus.bean.api.CategoryContentsBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryRecommendBean;
 import kr.co.zumo.app.lifeplus.manager.ActionBarManager;
 import kr.co.zumo.app.lifeplus.manager.IActionBarListener;
@@ -112,7 +113,7 @@ public class ThirdCategoryMainFragment extends FragmentBase<ThirdCategoryMainPre
   }
 
   @Override
-  public void drawBanner(ArrayList<CategoryBannerBean> beans) {
+  public void drawContentsBanner(ArrayList<CategoryBannerBean> beans, ArrayList<CategoryContentsBean> contents) {
 
   }