Browse Source

[북마크][Common] 북마크 리스트 있는 경우 api 연동 중

Hasemi 7 years ago
parent
commit
2d3329f047

+ 22 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/main/IMyMainMemberView.java

@@ -0,0 +1,22 @@
+package kr.co.zumo.app.lifeplus.view.screen.my.main;
+
+import java.util.ArrayList;
+
+import kr.co.zumo.app.lifeplus.bean.api.BookmarkBean;
+import kr.co.zumo.app.lifeplus.view.IView;
+
+/**
+ * IMyMainMemberView
+ * <pre>
+ * </pre>
+ *
+ * @author 하세미
+ * @version 1.0
+ * @history 하세미   [2018-11-13]   [최초 작성]
+ * @since 2018-11-13
+ */
+public interface IMyMainMemberView extends IView {
+
+  void setMyBookmarkList(ArrayList<BookmarkBean> bookmarkBeans);
+  void setDefaultBookmarkList(ArrayList<BookmarkBean> defaultBookmarkBeans);
+}

+ 75 - 5
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/main/MyMainMemberFragment.java

@@ -3,15 +3,22 @@ package kr.co.zumo.app.lifeplus.view.screen.my.main;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.support.constraint.ConstraintLayout;
 import android.support.design.widget.TabLayout;
 import android.support.v4.view.ViewPager;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+
+import java.util.ArrayList;
 
 import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.bean.api.BookmarkBean;
 import kr.co.zumo.app.lifeplus.helper.ActionBarHelper;
-import kr.co.zumo.app.lifeplus.model.BlankModel;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.screen.FragmentBase;
 import kr.co.zumo.app.lifeplus.view.screen.my.bucketlist.MyBucketListBannerPagerAdapter;
@@ -26,11 +33,18 @@ import kr.co.zumo.app.lifeplus.view.screen.my.bucketlist.MyBucketListBannerPager
  * @history 하세미   [2018-10-26]   [최초 작성]
  * @since 2018-10-26
  */
-public class MyMainMemberFragment extends FragmentBase<MyMainMemberPresenter> {
+public class MyMainMemberFragment extends FragmentBase<MyMainMemberPresenter> implements IMyMainMemberView {
 
   private ViewPager viewPagerBestBucketList;
   private TabLayout tabLayoutBestBucketList;
-
+  private TextView textViewBookmarkCount;
+  private TextView textViewBookmarkRecommend;
+  private ImageView imageViewBookmark1;
+  private ImageView imageViewBookmark2;
+  private TextView textViewBookmark1;
+  private TextView textViewBookmark2;
+  private ConstraintLayout layoutLikeBookmark1;
+  private ConstraintLayout layoutLikeBookmark2;
 
 
   @Override
@@ -43,13 +57,24 @@ public class MyMainMemberFragment extends FragmentBase<MyMainMemberPresenter> {
   protected void onAfterActivityCreated(Bundle savedInstanceState) {
     viewPagerBestBucketList = findViewById(R.id.view_pager_best_bucket_list);
     tabLayoutBestBucketList = findViewById(R.id.tab_layout_bucket_list);
+    textViewBookmarkCount = findViewById(R.id.text_view_book_mark);
+    textViewBookmarkRecommend = findViewById(R.id.text_view_book_mark_recommend);
+
+    textViewBookmark1 = findViewById(R.id.text_view_book_mark1);
+    textViewBookmark2 = findViewById(R.id.text_view_book_mark2);
+
+    imageViewBookmark1 = findViewById(R.id.image_view_book_mark1);
+    imageViewBookmark2 = findViewById(R.id.image_view_book_mark2);
+
+    layoutLikeBookmark1 = findViewById(R.id.layout_like_bookmark1);
+    layoutLikeBookmark2 = findViewById(R.id.layout_like_bookmark2);
 
     MyBucketListBannerPagerAdapter myBucketListBannerPagerAdapter = new MyBucketListBannerPagerAdapter(getActivity(), presenter, viewPagerBestBucketList);
     tabLayoutBestBucketList.setupWithViewPager(viewPagerBestBucketList, true);
     viewPagerBestBucketList.setAdapter(myBucketListBannerPagerAdapter);
 
     findViewById(R.id.text_view_my_coin).setOnClickListener(view -> {presenter.onEvent(new Event.Builder(Event.MY_COIN_MAIN).build());});
-    findViewById(R.id.text_view_book_mark).setOnClickListener(view -> { presenter.onEvent(new Event.Builder(Event.BOOK_MARK_LIST).build());});
+    textViewBookmarkCount.setOnClickListener(view -> { presenter.onEvent(new Event.Builder(Event.BOOK_MARK_LIST).build());});
     findViewById(R.id.text_view_purchase).setOnClickListener(view -> {presenter.onEvent(new Event.Builder(Event.MY_PURCHASE_HISTORY).build());});
     findViewById(R.id.text_view_exists_bucket_list).setOnClickListener(view -> {presenter.onEvent(new Event.Builder(Event.MY_BUCKET).build());});
     findViewById(R.id.image_view_coupon_mall).setOnClickListener(view -> { presenter.onEvent(new Event.Builder(Event.COUPON_MALL).build());});
@@ -68,7 +93,7 @@ public class MyMainMemberFragment extends FragmentBase<MyMainMemberPresenter> {
 
   @Override
   protected MyMainMemberPresenter definePresenter() {
-    return new MyMainMemberPresenter(getModel(BlankModel.class), this);
+    return new MyMainMemberPresenter(getModel(MyMainMemberModel.class), this);
   }
 
   @Override
@@ -85,4 +110,49 @@ public class MyMainMemberFragment extends FragmentBase<MyMainMemberPresenter> {
   protected boolean isSkipScreenWhenBack() {
     return false;
   }
+
+  @Override
+  public void setMyBookmarkList(ArrayList<BookmarkBean> bookmarkBeans) {
+    int size = bookmarkBeans.size();
+    textViewBookmarkCount.setText("북마크 " + size);
+    textViewBookmarkRecommend.setVisibility(View.GONE);
+    if (bookmarkBeans.size() == 1) {
+      textViewBookmark1.setText(bookmarkBeans.get(size - 1).getTitle());
+      layoutLikeBookmark1.setVisibility(View.VISIBLE);
+      Glide.with(imageViewBookmark1).load(bookmarkBeans.get(size - 1).getImageUrl()).into(imageViewBookmark1);
+    }
+    else {
+      textViewBookmark1.setText(bookmarkBeans.get(size - 2).getTitle());
+      layoutLikeBookmark1.setVisibility(View.VISIBLE);
+      Glide.with(imageViewBookmark1).load(bookmarkBeans.get(size - 2).getImageUrl()).into(imageViewBookmark1);
+      textViewBookmark2.setText(bookmarkBeans.get(size - 1).getTitle());
+      layoutLikeBookmark2.setVisibility(View.VISIBLE);
+      Glide.with(imageViewBookmark2).load(bookmarkBeans.get(size - 1).getImageUrl()).into(imageViewBookmark2);
+
+    }
+
+
+  }
+
+  @Override
+  public void setDefaultBookmarkList(ArrayList<BookmarkBean> defaultBookmarkBeans) {
+    int size = defaultBookmarkBeans.size();
+    textViewBookmarkCount.setText("북마크 0");
+    textViewBookmarkRecommend.setVisibility(View.VISIBLE);
+    if (defaultBookmarkBeans.size() == 1) {
+      textViewBookmark1.setText(defaultBookmarkBeans.get(size - 1).getTitle());
+      layoutLikeBookmark1.setVisibility(View.VISIBLE);
+      Glide.with(imageViewBookmark1).load(defaultBookmarkBeans.get(size - 1).getImageUrl()).into(imageViewBookmark1);
+
+    }
+    else {
+      textViewBookmark1.setText(defaultBookmarkBeans.get(size - 2).getTitle());
+      layoutLikeBookmark1.setVisibility(View.VISIBLE);
+      Glide.with(imageViewBookmark1).load(defaultBookmarkBeans.get(size - 2).getImageUrl()).into(imageViewBookmark1);
+      textViewBookmark2.setText(defaultBookmarkBeans.get(size - 1).getTitle());
+      layoutLikeBookmark2.setVisibility(View.VISIBLE);
+      Glide.with(imageViewBookmark2).load(defaultBookmarkBeans.get(size - 1).getImageUrl()).into(imageViewBookmark2);
+
+    }
+  }
 }

+ 109 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/main/MyMainMemberModel.java

@@ -0,0 +1,109 @@
+package kr.co.zumo.app.lifeplus.view.screen.my.main;
+
+import java.util.ArrayList;
+
+import io.reactivex.disposables.Disposable;
+import kr.co.zumo.app.lifeplus.bean.api.BestBookmarkRequestBean;
+import kr.co.zumo.app.lifeplus.bean.api.BookmarkBean;
+import kr.co.zumo.app.lifeplus.bean.api.BookmarkResultBean;
+import kr.co.zumo.app.lifeplus.model.Model;
+import kr.co.zumo.app.lifeplus.model.module.APIBookmarkBestModule;
+import kr.co.zumo.app.lifeplus.model.module.APIBookmarkMyModule;
+import kr.co.zumo.app.lifeplus.model.module.IAPIModuleListener;
+import kr.co.zumo.app.lifeplus.view.Event;
+
+/**
+ * MyMainMemberModel
+ * <pre>
+ * </pre>
+ *
+ * @author 하세미
+ * @version 1.0
+ * @history 하세미   [2018-11-13]   [최초 작성]
+ * @since 2018-11-13
+ */
+public class MyMainMemberModel extends Model {
+
+  private Disposable disposableBookMarkList;
+  private ArrayList<BookmarkBean> bookmarkBeans;
+
+  private Disposable disposableDefaultBookmarkList;
+  private ArrayList<BookmarkBean> defaultBookmarkBeans;
+
+  @Override
+  protected void destroyInternal() {
+
+  }
+
+  @Override
+  protected void startInternal() {
+
+  }
+
+  @Override
+  protected void stopInternal() {
+
+  }
+
+  @Override
+  protected void resumeInternal() {
+
+  }
+
+  @Override
+  protected void pauseInternal() {
+
+  }
+
+  public void loadBookMarkList() {
+    disposableBookMarkList = new APIBookmarkMyModule().call(new BestBookmarkRequestBean(getUserId()), new IAPIModuleListener<BookmarkResultBean>() {
+      @Override
+      public void onApiSuccess(BookmarkResultBean resultBean) {
+        bookmarkBeans = resultBean.getData();
+        onResult(new Event.Builder(Event.BOOK_MARK_LIST).build());
+      }
+
+      @Override
+      public void onApiReason(BookmarkResultBean resultBean) {
+
+      }
+
+      @Override
+      public void onApiError(String errorMessage) {
+
+      }
+    });
+
+  }
+
+  public ArrayList<BookmarkBean> getBookmarkList() {
+    return bookmarkBeans;
+  }
+
+  public void loadDefaultBookmarkList() {
+    disposableDefaultBookmarkList = new APIBookmarkBestModule().call(new BestBookmarkRequestBean(getUserId()), new IAPIModuleListener<BookmarkResultBean>() {
+      @Override
+      public void onApiSuccess(BookmarkResultBean resultBean) {
+        defaultBookmarkBeans = resultBean.getData();
+        onResult(new Event.Builder(Event.BOOK_MARK_DEFAULT).build());
+      }
+
+
+      @Override
+      public void onApiReason(BookmarkResultBean resultBean) {
+
+      }
+
+      @Override
+      public void onApiError(String errorMessage) {
+
+      }
+    });
+  }
+
+  public ArrayList<BookmarkBean> getDefaultBookmarkList() {
+    return defaultBookmarkBeans;
+  }
+
+
+}

+ 46 - 8
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/main/MyMainMemberPresenter.java

@@ -1,10 +1,9 @@
 package kr.co.zumo.app.lifeplus.view.screen.my.main;
 
 import kr.co.zumo.app.lifeplus.helper.NavigationBar;
-import kr.co.zumo.app.lifeplus.model.BlankModel;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
+import kr.co.zumo.app.lifeplus.view.DoubleChecker;
 import kr.co.zumo.app.lifeplus.view.Event;
-import kr.co.zumo.app.lifeplus.view.IView;
 import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
 
 /**
@@ -17,11 +16,20 @@ import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
  * @history 하세미   [2018-10-26]   [최초 작성]
  * @since 2018-10-26
  */
-public class MyMainMemberPresenter extends Presenter<BlankModel, IView> {
+public class MyMainMemberPresenter extends Presenter<MyMainMemberModel, IMyMainMemberView> {
 
+  private DoubleChecker doubleCheckerBookmarkList;
 
-  public MyMainMemberPresenter(BlankModel model, IView view) {
+  public MyMainMemberPresenter(MyMainMemberModel model, IMyMainMemberView view) {
     super(model, view);
+    doubleCheckerBookmarkList = new DoubleChecker(this::setBookmark);
+
+    init();
+  }
+
+  private void init() {
+    model.loadBookMarkList();
+    model.loadDefaultBookmarkList();
   }
 
   @Override
@@ -58,11 +66,13 @@ public class MyMainMemberPresenter extends Presenter<BlankModel, IView> {
   @Override
   protected void onEventInternal(Event event) {
     switch (event.getEventId()) {
-      case Event.BOOK_MARK_DEFAULT:
-        go(ScreenID.BOOK_MARK_DEFAULT);
-        break;
       case Event.BOOK_MARK_LIST:
-        go(ScreenID.BOOK_MARK_LIST);
+        if (model.getBookmarkList().size() == 0) {
+          go(ScreenID.BOOK_MARK_DEFAULT);
+        }
+        else {
+          go(ScreenID.BOOK_MARK_LIST);
+        }
         break;
       case Event.MY_COIN_MAIN:
         go(ScreenID.MY_COIN_MAIN);
@@ -86,11 +96,22 @@ public class MyMainMemberPresenter extends Presenter<BlankModel, IView> {
 
   @Override
   public void onResult(Event event) {
+    switch (event.getEventId()) {
+      case Event.BOOK_MARK_LIST:
+        doubleCheckerBookmarkList.checkSecond();
+        break;
+      case Event.BOOK_MARK_DEFAULT:
+        doubleCheckerBookmarkList.checkSecond();
+        break;
+      default:
+        break;
 
+    }
   }
 
   @Override
   public void onScreenReady() {
+    doubleCheckerBookmarkList.checkFirst();
 
   }
 
@@ -98,4 +119,21 @@ public class MyMainMemberPresenter extends Presenter<BlankModel, IView> {
   public void onNavigationClickSearch(NavigationBar navigationBar) {
 
   }
+
+  private void setBookmark() {
+    if (model.getBookmarkList().size() == 0) {
+      setDefaultBookmarkList();
+    }
+    else {
+      setMyBookmarkList();
+    }
+  }
+
+  private void setDefaultBookmarkList() {
+    view.setDefaultBookmarkList(model.getDefaultBookmarkList());
+  }
+
+  private void setMyBookmarkList() {
+    view.setMyBookmarkList(model.getBookmarkList());
+  }
 }

+ 14 - 13
app/src/main/res/layout/fragment_my_main_login_case.xml

@@ -234,6 +234,7 @@
         android:layout_marginTop="43dp"
         android:lineSpacingExtra="6sp"
         android:text="@string/book_mark_count"
+        android:textStyle="bold"
         android:textColor="@color/C000000"
         android:textSize="15sp"/>
 
@@ -275,7 +276,7 @@
       app:layout_constraintTop_toBottomOf="@+id/fourth_layout">
 
       <ImageView
-        android:id="@+id/image_view_book_mark"
+        android:id="@+id/image_view_book_mark1"
         android:layout_width="125dp"
         android:layout_height="93dp"
         android:layout_marginStart="25dp"
@@ -287,7 +288,7 @@
         app:layout_constraintTop_toTopOf="parent"/>
 
       <TextView
-        android:id="@+id/text_view_book_mark_title"
+        android:id="@+id/text_view_book_mark1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginStart="18dp"
@@ -296,14 +297,14 @@
         android:text="9월엔 구월동\n구월동 추천 스팟 6"
         android:textColor="@color/C000000"
         android:textSize="14sp"
-        app:layout_constraintBottom_toTopOf="@id/layout_like_bookmark"
-        app:layout_constraintStart_toEndOf="@+id/image_view_book_mark"
+        app:layout_constraintBottom_toTopOf="@id/layout_like_bookmark1"
+        app:layout_constraintStart_toEndOf="@+id/image_view_book_mark1"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_goneMarginBottom="27dp"
         app:layout_goneMarginTop="27dp"/>
 
       <android.support.constraint.ConstraintLayout
-        android:id="@+id/layout_like_bookmark"
+        android:id="@+id/layout_like_bookmark1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginStart="14dp"
@@ -313,8 +314,8 @@
         android:visibility="gone"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintHorizontal_bias="1.0"
-        app:layout_constraintStart_toEndOf="@+id/image_view_book_mark"
-        app:layout_constraintTop_toBottomOf="@+id/text_view_book_mark_title"
+        app:layout_constraintStart_toEndOf="@+id/image_view_book_mark1"
+        app:layout_constraintTop_toBottomOf="@+id/text_view_book_mark1"
         >
 
         <CheckBox
@@ -357,19 +358,19 @@
       app:layout_constraintTop_toBottomOf="@+id/fifth_layout">
 
       <ImageView
-        android:id="@+id/image_view2"
+        android:id="@+id/image_view_book_mark2"
         android:layout_width="125dp"
         android:layout_height="93dp"
         android:layout_marginStart="25dp"
         android:scaleType="fitXY"
         android:src="@drawable/img_bestbucket_banner_5"
         app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toStartOf="@+id/text_view2"
+        app:layout_constraintEnd_toStartOf="@+id/text_view_book_mark2"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent"/>
 
       <TextView
-        android:id="@+id/text_view2"
+        android:id="@+id/text_view_book_mark2"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginStart="18dp"
@@ -379,7 +380,7 @@
         android:textColor="@color/C000000"
         android:textSize="14sp"
         app:layout_constraintBottom_toTopOf="@+id/layout_like_bookmark2"
-        app:layout_constraintStart_toEndOf="@+id/image_view2"
+        app:layout_constraintStart_toEndOf="@+id/image_view_book_mark2"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_goneMarginBottom="27dp"
         app:layout_goneMarginTop="27dp"/>
@@ -394,8 +395,8 @@
         android:layout_marginBottom="16dp"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintHorizontal_bias="1.0"
-        app:layout_constraintStart_toEndOf="@+id/image_view2"
-        app:layout_constraintTop_toBottomOf="@+id/text_view2"
+        app:layout_constraintStart_toEndOf="@+id/image_view_book_mark2"
+        app:layout_constraintTop_toBottomOf="@+id/text_view_book_mark2"
         android:visibility="gone"
         >