Browse Source

[북마크][New] 북마크 data 선택 방식 변경

hyodong.min 6 years ago
parent
commit
c11fb884fa

+ 6 - 7
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/bookmark/BookMarkListAdapter.java

@@ -11,7 +11,6 @@ import java.util.List;
 
 
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.bean.api.BookmarkBean;
 import kr.co.zumo.app.lifeplus.bean.api.BookmarkBean;
-import kr.co.zumo.app.lifeplus.bean.api.ListItemNumberBean;
 import kr.co.zumo.app.lifeplus.supervisor.ContentsFlagHelper;
 import kr.co.zumo.app.lifeplus.supervisor.ContentsFlagHelper;
 import kr.co.zumo.app.lifeplus.view.IEventListener;
 import kr.co.zumo.app.lifeplus.view.IEventListener;
 
 
@@ -57,12 +56,12 @@ public class BookMarkListAdapter extends RecyclerView.Adapter<BookMarkListView>
 
 
     holder.bind(index, bean, event -> {
     holder.bind(index, bean, event -> {
       if (null != listener) {
       if (null != listener) {
-        int idx = event.getIndex();
-        // view 의 index 와 model 의 그것이 달라서 itemNumber 로 확인
-        BookmarkBean bookmarkBean = bookmarkBeans.get(idx);
-        ListItemNumberBean listItemNumberBean = new ListItemNumberBean(bookmarkBean.getItemNo(), bookmarkBean.getListItemNo());
-        // 여기서 index 는 뷰 리스트의 인덱스 => 업데이트 실패 시 이용
-        event = event.getClone().index(idx).json(listItemNumberBean.toJson()).build();
+//        int idx = event.getIndex();
+//        // view 의 index 와 model 의 그것이 달라서 itemNumber 로 확인
+//        BookmarkBean bookmarkBean = bookmarkBeans.get(idx);
+//        ListItemNumberBean listItemNumberBean = new ListItemNumberBean(bookmarkBean.getItemNo(), bookmarkBean.getListItemNo());
+//        // 여기서 index 는 뷰 리스트의 인덱스 => 업데이트 실패 시 이용
+//        event = event.getClone().index(idx).json(listItemNumberBean.toJson()).build();
         listener.onEvent(event);
         listener.onEvent(event);
       }
       }
     });
     });

+ 24 - 30
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/bookmark/BookMarkListModel.java

@@ -1,7 +1,5 @@
 package kr.co.zumo.app.lifeplus.view.screen.my.bookmark;
 package kr.co.zumo.app.lifeplus.view.screen.my.bookmark;
 
 
-import android.support.annotation.NonNull;
-
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 
 
@@ -209,24 +207,6 @@ public class BookMarkListModel extends Model {
     return categoryAnchorIndies;
     return categoryAnchorIndies;
   }
   }
 
 
-  /**
-   * itemNumber 로 index 를 가져온다.
-   * - 북마크를 카테고리 별로 정렬하면서 아이템의 index 가 변경되기 때문에.
-   *
-   * @param itemNo
-   * @return
-   */
-  public int getItemIndex(@NonNull String itemNo, @NonNull String listItemNo) {
-    int len = bookmarkBeans.size();
-    for (int i = 0; i < len; ++i) {
-      BookmarkBean bean = bookmarkBeans.get(i);
-      if (itemNo.equalsIgnoreCase(bean.getItemNo()) && listItemNo.equals(bean.getListItemNo())) {
-        return i;
-      }
-    }
-    return -1;
-  }
-
   /**
   /**
    * 카테고리 구분된 index 로 해당 카테고리 index 를 반환
    * 카테고리 구분된 index 로 해당 카테고리 index 를 반환
    * - 없으면 -1 반환
    * - 없으면 -1 반환
@@ -275,22 +255,21 @@ public class BookMarkListModel extends Model {
    * 좋아요 갱신
    * 좋아요 갱신
    *
    *
    * @param index         data 의 index
    * @param index         data 의 index
-   * @param viewListIndex view 의 index
    */
    */
-  public void updateLiked(int index, int viewListIndex) {
-    BookmarkBean contentsBean = getBookmarkList().get(index);
+  public void updateLiked(int index) {
+    BookmarkBean contentsBean = getCurrentBookmarkBean(index);
 
 
     boolean toChecked = !contentsBean.isLiked();
     boolean toChecked = !contentsBean.isLiked();
     disposableLiked = ContentsFlagHelper.getInstance().updateLiked(new ContentsLikeRequestBean(getUserName(), contentsBean.getListItemNo(), APIData.valueOf(toChecked)), new APIModuleListener<LifeplusAPIBean>() {
     disposableLiked = ContentsFlagHelper.getInstance().updateLiked(new ContentsLikeRequestBean(getUserName(), contentsBean.getListItemNo(), APIData.valueOf(toChecked)), new APIModuleListener<LifeplusAPIBean>() {
       @Override
       @Override
       public void onApiSuccess(LifeplusAPIBean resultBean) {
       public void onApiSuccess(LifeplusAPIBean resultBean) {
         contentsBean.setLiked(toChecked);
         contentsBean.setLiked(toChecked);
-        onResult(new Event.Builder(Event.SUCCESS).integer(Event.CONTENTS_LIKE).bool(toChecked).index(viewListIndex).build());
+        onResult(new Event.Builder(Event.SUCCESS).integer(Event.CONTENTS_LIKE).bool(toChecked).index(index).build());
       }
       }
 
 
       @Override
       @Override
       public void onApiError(String errorMessage, APIError error) {
       public void onApiError(String errorMessage, APIError error) {
-        onResult(new Event.Builder(Event.ERROR).integer(Event.CONTENTS_LIKE).bool(toChecked).index(viewListIndex).string(errorMessage).build());
+        onResult(new Event.Builder(Event.ERROR).integer(Event.CONTENTS_LIKE).bool(toChecked).index(index).string(errorMessage).build());
       }
       }
     });
     });
   }
   }
@@ -299,10 +278,9 @@ public class BookMarkListModel extends Model {
    * 북마크 갱신
    * 북마크 갱신
    *
    *
    * @param index         data 의 index
    * @param index         data 의 index
-   * @param viewListIndex view 의 index
    */
    */
-  public void updateBookmarked(int index, int viewListIndex) {
-    BookmarkBean contentsBean = getBookmarkList().get(index);
+  public void updateBookmarked(int index) {
+    BookmarkBean contentsBean = getCurrentBookmarkBean(index);
 
 
     boolean toChecked = !contentsBean.isBookmarked();
     boolean toChecked = !contentsBean.isBookmarked();
     disposableBookmarked = ContentsFlagHelper.getInstance().updateBookmarked(new ContentsBookmarkRequestBean(getUserName(), contentsBean.getItemNo(), contentsBean.getListItemNo(), APIData.valueOf(toChecked)), new APIModuleListener<LifeplusAPIBean>() {
     disposableBookmarked = ContentsFlagHelper.getInstance().updateBookmarked(new ContentsBookmarkRequestBean(getUserName(), contentsBean.getItemNo(), contentsBean.getListItemNo(), APIData.valueOf(toChecked)), new APIModuleListener<LifeplusAPIBean>() {
@@ -315,12 +293,12 @@ public class BookMarkListModel extends Model {
         else {
         else {
           BookmarkManager.getInstance().removeBookmarkByNumber(contentsBean.getItemNo(), contentsBean.getListItemNo());
           BookmarkManager.getInstance().removeBookmarkByNumber(contentsBean.getItemNo(), contentsBean.getListItemNo());
         }
         }
-        onResult(new Event.Builder(Event.SUCCESS).integer(Event.CONTENTS_BOOKMARK).bool(toChecked).index(viewListIndex).build());
+        onResult(new Event.Builder(Event.SUCCESS).integer(Event.CONTENTS_BOOKMARK).bool(toChecked).index(index).build());
       }
       }
 
 
       @Override
       @Override
       public void onApiError(String errorMessage, APIError error) {
       public void onApiError(String errorMessage, APIError error) {
-        onResult(new Event.Builder(Event.ERROR).integer(Event.CONTENTS_BOOKMARK).bool(toChecked).index(viewListIndex).string(errorMessage).build());
+        onResult(new Event.Builder(Event.ERROR).integer(Event.CONTENTS_BOOKMARK).bool(toChecked).index(index).string(errorMessage).build());
       }
       }
     });
     });
   }
   }
@@ -341,4 +319,20 @@ public class BookMarkListModel extends Model {
     ContentsFlagHelper.getInstance().clearChanged(hashCode);
     ContentsFlagHelper.getInstance().clearChanged(hashCode);
   }
   }
 
 
+  /**
+   * 정렬 타입에 따른 데이터 반환
+   *
+   * @param index
+   * @return
+   */
+  public BookmarkBean getCurrentBookmarkBean(int index) {
+    if (getSort() == Event.BOOKMARK_CATEGORY) {
+      // 카테고리 별
+      return categorizedBookmarkList.get(index);
+    }
+    else {
+      // 최신 순
+      return bookmarkBeans.get(index);
+    }
+  }
 }
 }

+ 5 - 14
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/bookmark/BookMarkListPresenter.java

@@ -4,7 +4,6 @@ import android.util.Log;
 
 
 import kr.co.zumo.app.lifeplus.bean.ContentsDeliveryBean;
 import kr.co.zumo.app.lifeplus.bean.ContentsDeliveryBean;
 import kr.co.zumo.app.lifeplus.bean.api.BookmarkBean;
 import kr.co.zumo.app.lifeplus.bean.api.BookmarkBean;
-import kr.co.zumo.app.lifeplus.bean.api.ListItemNumberBean;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
 import kr.co.zumo.app.lifeplus.view.DoubleChecker;
 import kr.co.zumo.app.lifeplus.view.DoubleChecker;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.Event;
@@ -97,15 +96,11 @@ public class BookMarkListPresenter extends Presenter<BookMarkListModel, IBookMar
   @Override
   @Override
   protected void onEventInternal(Event event) {
   protected void onEventInternal(Event event) {
     int index;
     int index;
-    int dataIndex;
     int viewListIndex;
     int viewListIndex;
-    ListItemNumberBean listItemNumberBean;
     switch (event.getEventId()) {
     switch (event.getEventId()) {
       case Event.CONTENTS:
       case Event.CONTENTS:
-        listItemNumberBean = event.fromJson(ListItemNumberBean.class);
-        index = model.getItemIndex(listItemNumberBean.getItemNo(), listItemNumberBean.getListItemNo());
         Log.i("APP# BookMarkListPresenter | onEventInternal", "|===================> " + event);
         Log.i("APP# BookMarkListPresenter | onEventInternal", "|===================> " + event);
-        BookmarkBean bean = model.getBookmarkList().get(index);
+        BookmarkBean bean = model.getCurrentBookmarkBean(event.getIndex());
         Log.w("APP# BookMarkListPresenter | onEventInternal", "|" + bean.toPrettyJson());
         Log.w("APP# BookMarkListPresenter | onEventInternal", "|" + bean.toPrettyJson());
         ContentsDeliveryBean contentsDeliveryBean = new ContentsDeliveryBean.Builder(bean).listItemNo(bean.getListItemNo()).build();
         ContentsDeliveryBean contentsDeliveryBean = new ContentsDeliveryBean.Builder(bean).listItemNo(bean.getListItemNo()).build();
 
 
@@ -114,16 +109,12 @@ public class BookMarkListPresenter extends Presenter<BookMarkListModel, IBookMar
         go(ScreenID.CONTENTS);
         go(ScreenID.CONTENTS);
         break;
         break;
       case Event.BOOKMARK:
       case Event.BOOKMARK:
-        listItemNumberBean = event.fromJson(ListItemNumberBean.class);
-        viewListIndex = event.getIndex();
-        dataIndex = model.getItemIndex(listItemNumberBean.getItemNo(), listItemNumberBean.getListItemNo());
-        model.updateBookmarked(dataIndex, viewListIndex);
+        index = event.getIndex();
+        model.updateBookmarked(index);
         break;
         break;
       case Event.LIKE:
       case Event.LIKE:
-        viewListIndex = event.getIndex();
-        listItemNumberBean = event.fromJson(ListItemNumberBean.class);
-        dataIndex = model.getItemIndex(listItemNumberBean.getItemNo(), listItemNumberBean.getListItemNo());
-        model.updateLiked(dataIndex, viewListIndex);
+        index = event.getIndex();
+        model.updateLiked(index);
         break;
         break;
       case Event.SORT:
       case Event.SORT:
         Log.i("APP# BookMarkListPresenter | onEventInternal", "|===================> " + event);
         Log.i("APP# BookMarkListPresenter | onEventInternal", "|===================> " + event);