Browse Source

[마이메인][Common] 비로그인시, 추천 북마크 리스트 상세 진입 구현

Hasemi 7 năm trước cách đây
mục cha
commit
5467945fbc

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

@@ -0,0 +1,21 @@
+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;
+
+/**
+ * IMyMainGuestView
+ * <pre>
+ * </pre>
+ *
+ * @author 하세미
+ * @version 1.0
+ * @history 하세미   [2018-11-13]   [최초 작성]
+ * @since 2018-11-13
+ */
+public interface IMyMainGuestView extends IView {
+
+  void drawDefaultBookmarkList(ArrayList<BookmarkBean> bookmarkBeans);
+}

+ 45 - 4
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/main/MyMainGuestFragment.java

@@ -8,10 +8,16 @@ 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,10 +32,14 @@ import kr.co.zumo.app.lifeplus.view.screen.my.bucketlist.MyBucketListBannerPager
  * @history 하세미   [2018-10-30]   [최초 작성]
  * @since 2018-10-30
  */
-public class MyMainGuestFragment extends FragmentBase<MyMainGuestPresenter> {
+public class MyMainGuestFragment extends FragmentBase<MyMainGuestPresenter> implements IMyMainGuestView {
 
   private ViewPager viewPagerBestBucketList;
   private TabLayout tabLayoutBestBucketList;
+  private ImageView imageViewBookmark1;
+  private ImageView imageViewBookmark2;
+  private TextView textViewBookmark1;
+  private TextView textViewBookmark2;
 
   @Override
   protected View onAfterCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@@ -40,10 +50,17 @@ public class MyMainGuestFragment extends FragmentBase<MyMainGuestPresenter> {
   protected void onAfterActivityCreated(Bundle savedInstanceState) {
     viewPagerBestBucketList = findViewById(R.id.view_pager_best_bucket_list);
     tabLayoutBestBucketList = findViewById(R.id.tab_layout_bucket_list);
-    MyBucketListBannerPagerAdapter myBucketListBannerPagerAdapter = new MyBucketListBannerPagerAdapter(getActivity(), presenter ,viewPagerBestBucketList);
+    MyBucketListBannerPagerAdapter myBucketListBannerPagerAdapter = new MyBucketListBannerPagerAdapter(getActivity(), presenter, viewPagerBestBucketList);
     tabLayoutBestBucketList.setupWithViewPager(viewPagerBestBucketList, true);
     viewPagerBestBucketList.setAdapter(myBucketListBannerPagerAdapter);
 
+    //북마크추천리스트 두개
+    imageViewBookmark1 = findViewById(R.id.image_view_book_mark1);
+    imageViewBookmark2 = findViewById(R.id.image_view_book_mark2);
+    textViewBookmark1 = findViewById(R.id.text_view_book_mark1);
+    textViewBookmark2 = findViewById(R.id.text_view_book_mark2);
+
+
     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_DEFAULT).build());});
     findViewById(R.id.text_view_user_confirm).setOnClickListener(view -> { presenter.onEvent(new Event.Builder(Event.JOINED).build());});
@@ -62,7 +79,7 @@ public class MyMainGuestFragment extends FragmentBase<MyMainGuestPresenter> {
 
   @Override
   protected MyMainGuestPresenter definePresenter() {
-    return new MyMainGuestPresenter(getModel(BlankModel.class), this);
+    return new MyMainGuestPresenter(getModel(MyMainGuestModel.class), this);
   }
 
   @Override
@@ -79,4 +96,28 @@ public class MyMainGuestFragment extends FragmentBase<MyMainGuestPresenter> {
   protected boolean isSkipScreenWhenBack() {
     return false;
   }
+
+  @Override
+  public void drawDefaultBookmarkList(ArrayList<BookmarkBean> defaultBookmarkBeans) {
+    if (defaultBookmarkBeans.size() == 1) {
+      textViewBookmark1.setText(defaultBookmarkBeans.get(0).getTitle());
+      Glide.with(imageViewBookmark1).load(defaultBookmarkBeans.get(0).getImageUrl()).into(imageViewBookmark1);
+      textViewBookmark1.setOnClickListener(view -> {presenter.onEvent(new Event.Builder(Event.CONTENTS).index(0).build());});
+      imageViewBookmark1.setOnClickListener(view -> {presenter.onEvent(new Event.Builder(Event.CONTENTS).index(0).build());});
+
+    }
+    else {
+      textViewBookmark1.setText(defaultBookmarkBeans.get(defaultBookmarkBeans.size() - 1).getTitle());
+      Glide.with(imageViewBookmark1).load(defaultBookmarkBeans.get(defaultBookmarkBeans.size() - 1).getImageUrl()).into(imageViewBookmark1);
+      textViewBookmark2.setText(defaultBookmarkBeans.get(defaultBookmarkBeans.size() - 2).getTitle());
+      Glide.with(imageViewBookmark2).load(defaultBookmarkBeans.get(defaultBookmarkBeans.size() - 2).getImageUrl()).into(imageViewBookmark2);
+
+      textViewBookmark1.setOnClickListener(view -> {presenter.onEvent(new Event.Builder(Event.CONTENTS).index(defaultBookmarkBeans.size() - 1).build());});
+      imageViewBookmark1.setOnClickListener(view -> {presenter.onEvent(new Event.Builder(Event.CONTENTS).index(defaultBookmarkBeans.size() - 1).build());});
+      textViewBookmark2.setOnClickListener(view -> {presenter.onEvent(new Event.Builder(Event.CONTENTS).index(defaultBookmarkBeans.size() - 2).build());});
+      imageViewBookmark2.setOnClickListener(view -> {presenter.onEvent(new Event.Builder(Event.CONTENTS).index(defaultBookmarkBeans.size() - 2).build());});
+    }
+
+
+  }
 }

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

@@ -0,0 +1,78 @@
+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.IAPIModuleListener;
+import kr.co.zumo.app.lifeplus.view.Event;
+
+/**
+ * MyMainGuestModel
+ * <pre>
+ * </pre>
+ *
+ * @author 하세미
+ * @version 1.0
+ * @history 하세미   [2018-11-13]   [최초 작성]
+ * @since 2018-11-13
+ */
+public class MyMainGuestModel extends Model {
+
+  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 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.SUCCESS).build());
+      }
+
+
+      @Override
+      public void onApiReason(BookmarkResultBean resultBean) {
+
+      }
+
+      @Override
+      public void onApiError(String errorMessage) {
+
+      }
+    });
+  }
+
+  public ArrayList<BookmarkBean> getDefaultBookmarkList() {
+    return defaultBookmarkBeans;
+  }
+}

+ 33 - 4
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/main/MyMainGuestPresenter.java

@@ -1,10 +1,11 @@
 package kr.co.zumo.app.lifeplus.view.screen.my.main;
 
+import kr.co.zumo.app.lifeplus.bean.ContentsBean;
+import kr.co.zumo.app.lifeplus.helper.DeliveryHelper;
 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 +18,18 @@ import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
  * @history 하세미   [2018-10-30]   [최초 작성]
  * @since 2018-10-30
  */
-public class MyMainGuestPresenter extends Presenter<BlankModel, IView> {
+public class MyMainGuestPresenter extends Presenter<MyMainGuestModel, IMyMainGuestView> {
 
+  DoubleChecker doubleChecker;
 
-  public MyMainGuestPresenter(BlankModel model, IView view) {
+  public MyMainGuestPresenter(MyMainGuestModel model, IMyMainGuestView view) {
     super(model, view);
+    doubleChecker = new DoubleChecker(this::drawDefaultBookmarkList);
+    init();
+  }
+
+  private void init() {
+    model.loadDefaultBookmarkList();
   }
 
   @Override
@@ -73,6 +81,14 @@ public class MyMainGuestPresenter extends Presenter<BlankModel, IView> {
       case Event.COUPON_MALL:
         go(ScreenID.COUPON_MALL);
         break;
+        case Event.CONTENTS:
+          ContentsBean bean = new ContentsBean();
+          bean.setItemNumber(model.getDefaultBookmarkList().get(event.getIndex()).getItemNumber());
+          bean.setImageUrl(model.getDefaultBookmarkList().get(event.getIndex()).getImageUrl());
+          DeliveryHelper deliveryHelper = getHelper(DeliveryHelper.class);
+          deliveryHelper.setPackaging(bean);
+          go(ScreenID.CONTENTS);
+          break;
       default:
         break;
     }
@@ -80,15 +96,28 @@ public class MyMainGuestPresenter extends Presenter<BlankModel, IView> {
 
   @Override
   public void onResult(Event event) {
+    switch (event.getEventId()) {
+      case Event.SUCCESS:
+        doubleChecker.checkSecond();
+        break;
+      default:
+        break;
+    }
 
   }
 
   @Override
   public void onScreenReady() {
+    doubleChecker.checkFirst();
 
   }
+
   @Override
   public void onNavigationClickSearch(NavigationBar navigationBar) {
 
   }
+
+  private void drawDefaultBookmarkList() {
+    view.drawDefaultBookmarkList(model.getDefaultBookmarkList());
+  }
 }

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

@@ -140,8 +140,8 @@ public class MyMainMemberFragment extends FragmentBase<MyMainMemberPresenter> im
     textViewBookmarkCount.setText("북마크 0");
     textViewBookmarkRecommend.setVisibility(View.VISIBLE);
     if (defaultBookmarkBeans.size() == 1) {
-      textViewBookmark1.setText(defaultBookmarkBeans.get(size - 1).getTitle());
       layoutLikeBookmark1.setVisibility(View.VISIBLE);
+      textViewBookmark1.setText(defaultBookmarkBeans.get(size - 1).getTitle());
       Glide.with(imageViewBookmark1).load(defaultBookmarkBeans.get(size - 1).getImageUrl()).into(imageViewBookmark1);
 
     }

+ 12 - 12
app/src/main/res/layout/fragment_my_main_guest_case.xml

@@ -179,28 +179,28 @@
       app:layout_constraintTop_toBottomOf="@+id/fourth_layout">
 
       <ImageView
-        android:id="@+id/image_view_bucket_list1"
+        android:id="@+id/image_view_book_mark1"
         android:layout_width="125dp"
         android:layout_height="93dp"
         android:layout_marginStart="25dp"
         android:scaleType="fitXY"
-        android:src="@drawable/img_bestbucket_banner_5"
+        tools:src="@drawable/img_bestbucket_banner_5"
         app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toStartOf="@+id/text_view_bucket_list1"
+        app:layout_constraintEnd_toStartOf="@+id/text_view_book_mark1"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent"/>
 
       <TextView
-        android:id="@+id/text_view_bucket_list1"
+        android:id="@+id/text_view_book_mark1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginStart="18dp"
         android:lineSpacingExtra="6sp"
-        android:text="9월엔 구월동\n구월동 추천 스팟 6"
+        tools:text="9월엔 구월동\n구월동 추천 스팟 6"
         android:textColor="@color/C000000"
         android:textSize="14sp"
         app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toEndOf="@+id/image_view_bucket_list1"
+        app:layout_constraintStart_toEndOf="@+id/image_view_book_mark1"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_goneMarginBottom="27dp"
         app:layout_goneMarginTop="27dp"/>
@@ -216,28 +216,28 @@
       app:layout_constraintTop_toBottomOf="@+id/fifth_layout">
 
       <ImageView
-        android:id="@+id/image_view_bucket_list2"
+        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"
+        tools:src="@drawable/img_bestbucket_banner_5"
         app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toStartOf="@+id/text_view_bucket_list2"
+        app:layout_constraintEnd_toStartOf="@+id/text_view_book_mark2"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent"/>
 
       <TextView
-        android:id="@+id/text_view_bucket_list2"
+        android:id="@+id/text_view_book_mark2"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginStart="18dp"
         android:lineSpacingExtra="6sp"
-        android:text="9월엔 구월동\n구월동 추천 스팟 6"
+        tools:text="9월엔 구월동\n구월동 추천 스팟 6"
         android:textColor="@color/C000000"
         android:textSize="14sp"
         app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toEndOf="@+id/image_view_bucket_list2"
+        app:layout_constraintStart_toEndOf="@+id/image_view_book_mark2"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_goneMarginBottom="27dp"
         app:layout_goneMarginTop="27dp"/>