Browse Source

[컨텐츠][New] 시리즈 뷰 생성 중

hyodong.min 7 years ago
parent
commit
58663fcc2d

+ 2 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/bean/api/ContentsDetailListBean.java

@@ -34,11 +34,11 @@ public class ContentsDetailListBean extends JsonBeanBase {
     this.itemDetailList = itemDetailList;
   }
 
-  public List getSeriesItemList() {
+  public List<SeriesItemBean> getSeriesItemList() {
     return seriesItemList;
   }
 
-  public void setSeriesItemList(List seriesItemList) {
+  public void setSeriesItemList(List<SeriesItemBean> seriesItemList) {
     this.seriesItemList = seriesItemList;
   }
 }

+ 7 - 7
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/ContentsModel.java

@@ -46,37 +46,37 @@ public class ContentsModel extends Model {
   }
 
   @Override
-  protected void createViewInternal() {
+  protected final void createViewInternal() {
   }
 
   @Override
-  protected void destroyInternal() {
+  protected final void destroyInternal() {
     stopLoading();
     contentsBean = null;
     saveGuestLikedList();
   }
 
   @Override
-  protected void destroyViewInternal() {
+  protected final void destroyViewInternal() {
   }
 
   @Override
-  protected void startInternal() {
+  protected final void startInternal() {
 
   }
 
   @Override
-  protected void stopInternal() {
+  protected final void stopInternal() {
 
   }
 
   @Override
-  protected void resumeInternal() {
+  protected final void resumeInternal() {
 
   }
 
   @Override
-  protected void pauseInternal() {
+  protected final void pauseInternal() {
 
   }
 

+ 27 - 4
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/series/ContentsSeriesAdapter.java

@@ -7,7 +7,11 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import java.util.List;
+
 import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.bean.api.SeriesItemBean;
+import kr.co.zumo.app.lifeplus.supervisor.ContentsFlagHelper;
 import kr.co.zumo.app.lifeplus.view.IEventListener;
 
 /**
@@ -25,27 +29,46 @@ public class ContentsSeriesAdapter extends RecyclerView.Adapter<ContentsSeriesVi
   private Context context;
   private LayoutInflater inflater;
   private IEventListener listener;
+  private List<SeriesItemBean> list;
 
-  public ContentsSeriesAdapter(Context context, IEventListener listener) {
+  public ContentsSeriesAdapter(Context context, List<SeriesItemBean> list, IEventListener listener) {
     this.context = context;
     this.listener = listener;
+    this.list = list;
     this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   }
 
   @NonNull
   @Override
   public ContentsSeriesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
-   View view = inflater.inflate(R.layout.category_series_item, parent, false);
+    View view = inflater.inflate(R.layout.category_series_item, parent, false);
     return new ContentsSeriesViewHolder(view);
   }
 
   @Override
   public void onBindViewHolder(@NonNull ContentsSeriesViewHolder holder, int position) {
-    holder.bind();
+    SeriesItemBean bean = list.get(position);
+    if (false == bean.isSetup()) {
+      bean.setLiked(ContentsFlagHelper.getInstance().isLiked(bean.getItemNumber()));
+      bean.setBookmarked(ContentsFlagHelper.getInstance().isLiked(bean.getItemNumber()));
+    }
+    holder.bind(position, bean, event -> {
+      listener.onEvent(event);
+    });
+  }
+
+  @Override
+  public void onViewAttachedToWindow(@NonNull ContentsSeriesViewHolder holder) {
+    holder.attach();
+  }
+
+  @Override
+  public void onViewDetachedFromWindow(@NonNull ContentsSeriesViewHolder holder) {
+    holder.detach();
   }
 
   @Override
   public int getItemCount() {
-    return 10;
+    return list.size();
   }
 }

+ 41 - 11
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/series/ContentsSeriesFragment.java

@@ -11,11 +11,12 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
 
+import java.util.List;
+
 import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.bean.api.SeriesItemBean;
 import kr.co.zumo.app.lifeplus.helper.ActionBarHelper;
 import kr.co.zumo.app.lifeplus.util.ResourceUtil;
-import kr.co.zumo.app.lifeplus.view.Event;
-import kr.co.zumo.app.lifeplus.view.IEventListener;
 import kr.co.zumo.app.lifeplus.view.screen.FragmentBase;
 
 /**
@@ -33,6 +34,7 @@ public class ContentsSeriesFragment extends FragmentBase<ContentsSeriesPresenter
   private RecyclerView recyclerViewCategoryMainSeries;
   private TextView textViewTitle;
   private TextView textViewSubTitle;
+  private ContentsSeriesAdapter adapter;
 
   @Override
   protected View onAfterCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@@ -46,14 +48,6 @@ public class ContentsSeriesFragment extends FragmentBase<ContentsSeriesPresenter
     textViewTitle = findViewById(R.id.text_view_title);
 
     recyclerViewCategoryMainSeries = findViewById(R.id.recycler_view_series);
-    ContentsSeriesAdapter adapter = new ContentsSeriesAdapter(getActivity(), new IEventListener() {
-      @Override
-      public void onEvent(Event event) {
-
-      }
-    });
-
-    recyclerViewCategoryMainSeries.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
     recyclerViewCategoryMainSeries.addItemDecoration(new RecyclerView.ItemDecoration() {
       @Override
       public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
@@ -61,7 +55,7 @@ public class ContentsSeriesFragment extends FragmentBase<ContentsSeriesPresenter
         outRect.bottom = ResourceUtil.dpToPx(10);
       }
     });
-    recyclerViewCategoryMainSeries.setAdapter(adapter);
+
   }
 
   @Override
@@ -102,4 +96,40 @@ public class ContentsSeriesFragment extends FragmentBase<ContentsSeriesPresenter
   public void setSeriesSubTitle(String subTitle) {
     textViewSubTitle.setText(subTitle);
   }
+
+  @Override
+  public void draw(List<SeriesItemBean> list) {
+
+    adapter = new ContentsSeriesAdapter(getActivity(), list, event -> {
+      presenter.onEvent(event);
+    });
+
+    recyclerViewCategoryMainSeries.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
+    recyclerViewCategoryMainSeries.setAdapter(adapter);
+  }
+
+  @Override
+  public void goGooglePlay() {
+    // nothing
+  }
+
+  @Override
+  public void render(String url) {
+    // nothing
+  }
+
+  @Override
+  public void setTooltip() {
+    // nothing
+  }
+
+  @Override
+  public void setLiked(boolean isChecked) {
+    adapter.notifyDataSetChanged();
+  }
+
+  @Override
+  public void setBookmarked(boolean isChecked) {
+    adapter.notifyDataSetChanged();
+  }
 }

+ 20 - 21
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/series/ContentsSeriesModel.java

@@ -1,6 +1,12 @@
 package kr.co.zumo.app.lifeplus.view.screen.contents.series;
 
-import kr.co.zumo.app.lifeplus.model.Model;
+import java.util.List;
+
+import kr.co.zumo.app.lifeplus.bean.GuestLikedListBean;
+import kr.co.zumo.app.lifeplus.bean.api.ContentsDetailListBean;
+import kr.co.zumo.app.lifeplus.bean.api.SeriesItemBean;
+import kr.co.zumo.app.lifeplus.model.SuperModel;
+import kr.co.zumo.app.lifeplus.view.screen.contents.ContentsModel;
 
 /**
  * ContentsSeriesModel
@@ -12,39 +18,32 @@ import kr.co.zumo.app.lifeplus.model.Model;
  * @history 하세미   [2018-11-26]   [최초 작성]
  * @since 2018-11-26
  */
-public class ContentsSeriesModel extends Model {
-  @Override
-  protected void createViewInternal() {
+public class ContentsSeriesModel extends ContentsModel {
 
-  }
-
-  @Override
-  protected void destroyInternal() {
+  private ContentsDetailListBean contentsDetailListBean;
 
+  public ContentsSeriesModel() {
   }
 
-  @Override
-  protected void destroyViewInternal() {
-
+  public void setContentsDetailListBean(ContentsDetailListBean contentsDetailListBean) {
+    this.contentsDetailListBean = contentsDetailListBean;
   }
 
-  @Override
-  protected void startInternal() {
-
+  public List<SeriesItemBean> getSeriesItemBeans() {
+    return contentsDetailListBean.getSeriesItemList();
   }
 
-  @Override
-  protected void stopInternal() {
-
+  private GuestLikedListBean getGuestLikedList() {
+    return SuperModel.getInstance().getGuestLikedListBean();
   }
 
-  @Override
-  protected void resumeInternal() {
-
+  public void setSelectedIndex(int index) {
+    contentsBean = getSeriesItemBeans().get(index);
   }
 
   @Override
-  protected void pauseInternal() {
+  protected void stopLoadingInternal() {
 
   }
+
 }

+ 30 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/series/ContentsSeriesPresenter.java

@@ -1,5 +1,7 @@
 package kr.co.zumo.app.lifeplus.view.screen.contents.series;
 
+import kr.co.zumo.app.lifeplus.bean.api.ContentsDetailListBean;
+import kr.co.zumo.app.lifeplus.helper.DeliveryHelper;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
@@ -17,6 +19,13 @@ import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
 public class ContentsSeriesPresenter extends Presenter<ContentsSeriesModel, IContentsSeriesView> {
   public ContentsSeriesPresenter(ContentsSeriesModel model, IContentsSeriesView view) {
     super(model, view);
+
+    DeliveryHelper helper = getHelper(DeliveryHelper.class);
+    ContentsDetailListBean contentsDetailListBean = helper.getPackaging(ContentsDetailListBean.class);
+    if (null != contentsDetailListBean) {
+      model.setContentsDetailListBean(contentsDetailListBean);
+    }
+
   }
 
   @Override
@@ -62,7 +71,25 @@ public class ContentsSeriesPresenter extends Presenter<ContentsSeriesModel, ICon
 
   @Override
   protected void onEventInternal(Event event) {
-
+    switch (event.getEventId()) {
+      case Event.CLICK:
+        // todo 해당 컨텐츠로 이동
+        model.setSelectedIndex(event.getIndex());
+        break;
+      case Event.LIKE:
+        // like
+        model.setSelectedIndex(event.getIndex());
+        model.updateLiked();
+        break;
+      case Event.BOOKMARK:
+        // bookmark
+        model.setSelectedIndex(event.getIndex());
+        model.updateBookmarked();
+
+        break;
+      default:
+        break;
+    }
   }
 
   @Override
@@ -70,6 +97,8 @@ public class ContentsSeriesPresenter extends Presenter<ContentsSeriesModel, ICon
     //시리즈 헤더 title, subtitle
     view.setSeriesTitle("title");
     view.setSeriesSubTitle("subTitle");
+
+    view.draw(model.getSeriesItemBeans());
   }
 
   @Override

+ 48 - 8
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/series/ContentsSeriesViewHolder.java

@@ -6,7 +6,12 @@ import android.widget.CheckBox;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.bumptech.glide.Glide;
+
 import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.bean.api.SeriesItemBean;
+import kr.co.zumo.app.lifeplus.view.Event;
+import kr.co.zumo.app.lifeplus.view.IEventListener;
 
 /**
  * ContentsSeriesViewHolder
@@ -21,24 +26,59 @@ import kr.co.zumo.app.R;
 public class ContentsSeriesViewHolder extends RecyclerView.ViewHolder {
 
   private ImageView imageViewSeries;
-  private TextView textViewSeriesCategory;
-  private TextView textViewSeriesTitle;
+  private TextView textViewSmall;
+  private TextView textViewBig;
   private CheckBox checkBoxLike;
   private CheckBox checkBoxBookmark;
+  private SeriesItemBean bean;
+  private IEventListener listener;
+  private int index;
 
   public ContentsSeriesViewHolder(View itemView) {
     super(itemView);
+  }
+
+  public void bind(int index, SeriesItemBean bean, IEventListener listener) {
+    this.index = index;
+    this.bean = bean;
+    this.listener = listener;
+  }
+
+  public void attach() {
+
     imageViewSeries = itemView.findViewById(R.id.image_view_series);
-    textViewSeriesCategory = itemView.findViewById(R.id.text_view_series_category);
-    textViewSeriesTitle = itemView.findViewById(R.id.text_view_series_title);
+    textViewSmall = itemView.findViewById(R.id.text_view_series_category);
+    textViewBig = itemView.findViewById(R.id.text_view_series_title);
+
     checkBoxLike = itemView.findViewById(R.id.like_check);
     checkBoxBookmark = itemView.findViewById(R.id.book_mark_check);
+
+    Glide.with(imageViewSeries).load(bean.getImageUrl()).into(imageViewSeries);
+    textViewSmall.setText(bean.getTitle());
+    textViewBig.setText(bean.getSubTitle());
+
+    imageViewSeries.setOnClickListener(v -> {
+      listener.onEvent(new Event.Builder(Event.CLICK).index(index).build());
+    });
+
+    checkBoxLike.setOnClickListener(v -> {
+      listener.onEvent(new Event.Builder(Event.LIKE).index(index).build());
+    });
+
+    checkBoxBookmark.setOnClickListener(v -> {
+      listener.onEvent(new Event.Builder(Event.BOOKMARK).index(index).build());
+    });
+
+    checkBoxLike.setChecked(bean.isLiked());
+    checkBoxBookmark.setChecked(bean.isBookmarked());
   }
 
-  public void bind() {
-    imageViewSeries.setImageDrawable(itemView.getResources().getDrawable(R.drawable.banner_bg_1));
-    textViewSeriesCategory.setText("category");
-    textViewSeriesTitle.setText("title");
+  public void detach() {
 
+    if (null != imageViewSeries) {
+      Glide.with(imageViewSeries).clear(imageViewSeries);
+      imageViewSeries.setOnClickListener(null);
+      imageViewSeries = null;
+    }
   }
 }

+ 8 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/series/IContentsSeriesView.java

@@ -1,6 +1,9 @@
 package kr.co.zumo.app.lifeplus.view.screen.contents.series;
 
-import kr.co.zumo.app.lifeplus.view.IView;
+import java.util.List;
+
+import kr.co.zumo.app.lifeplus.bean.api.SeriesItemBean;
+import kr.co.zumo.app.lifeplus.view.screen.contents.IContentsView;
 
 /**
  * IContentsSeriesView
@@ -12,8 +15,11 @@ import kr.co.zumo.app.lifeplus.view.IView;
  * @history 하세미   [2018-11-26]   [최초 작성]
  * @since 2018-11-26
  */
-public interface IContentsSeriesView extends IView {
+public interface IContentsSeriesView extends IContentsView {
 
   void setSeriesTitle(String title);
+
   void setSeriesSubTitle(String subTitle);
+
+  void draw(List<SeriesItemBean> list);
 }