Prechádzať zdrojové kódy

[북마크][Bug] 북마크 설정 오류 시 리스트의 다른 아이템의 아이콘이 변경되는 오류 수정
- #182

hyodong.min 6 rokov pred
rodič
commit
77cee465d2

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

@@ -61,7 +61,8 @@ public class BookMarkListAdapter extends RecyclerView.Adapter<BookMarkListView>
         // view 의 index 와 model 의 그것이 달라서 itemNumber 로 확인
         BookmarkBean bookmarkBean = bookmarkBeans.get(idx);
         ListItemNumberBean listItemNumberBean = new ListItemNumberBean(bookmarkBean.getItemNo(), bookmarkBean.getListItemNo());
-        event = event.getClone().index(-1).json(listItemNumberBean.toJson()).build();
+        // 여기서 index 는 뷰 리스트의 인덱스 => 업데이트 실패 시 이용
+        event = event.getClone().index(idx).json(listItemNumberBean.toJson()).build();
         listener.onEvent(event);
       }
     });

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

@@ -242,13 +242,13 @@ public class BookMarkListFragment extends FragmentBase<BookMarkListPresenter> im
   }
 
   @Override
-  public void setBookmarkContentsBookmarked(int index, boolean isChecked) {
-    bookMarkListAdapter.notifyDataSetChanged();
+  public void setBookmarkContentsBookmarked(int viewListIndex, boolean isChecked) {
+    bookMarkListAdapter.notifyItemChanged(viewListIndex);
   }
 
   @Override
-  public void setBookmarkContentsLiked(int index, boolean isChecked) {
-    bookMarkListAdapter.notifyDataSetChanged();
+  public void setBookmarkContentsLiked(int viewListIndex, boolean isChecked) {
+    bookMarkListAdapter.notifyItemChanged(viewListIndex);
   }
 
   @Override

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

@@ -296,7 +296,13 @@ public class BookMarkListModel extends Model {
     });
   }
 
-  public void updateLiked(int index) {
+  /**
+   * 좋아요 갱신
+   *
+   * @param index data 의 index
+   * @param viewListIndex view 의 index
+   */
+  public void updateLiked(int index, int viewListIndex) {
     BookmarkBean contentsBean = getBookmarkList().get(index);
 
     boolean toChecked = !contentsBean.isLiked();
@@ -304,17 +310,23 @@ public class BookMarkListModel extends Model {
       @Override
       public void onApiSuccess(LifeplusAPIBean resultBean) {
         contentsBean.setLiked(toChecked);
-        onResult(new Event.Builder(Event.SUCCESS).integer(Event.CONTENTS_LIKE).bool(toChecked).index(index).build());
+        onResult(new Event.Builder(Event.SUCCESS).integer(Event.CONTENTS_LIKE).bool(toChecked).index(viewListIndex).build());
       }
 
       @Override
       public void onApiError(String errorMessage, APIError error) {
-        onResult(new Event.Builder(Event.ERROR).integer(Event.CONTENTS_LIKE).bool(toChecked).index(index).string(errorMessage).build());
+        onResult(new Event.Builder(Event.ERROR).integer(Event.CONTENTS_LIKE).bool(toChecked).index(viewListIndex).string(errorMessage).build());
       }
     });
   }
 
-  public void updateBookmarked(int index) {
+  /**
+   * 북마크 갱신
+   *
+   * @param index data 의 index
+   * @param viewListIndex view 의 index
+   */
+  public void updateBookmarked(int index, int viewListIndex) {
     BookmarkBean contentsBean = getBookmarkList().get(index);
 
     boolean toChecked = !contentsBean.isBookmarked();
@@ -328,12 +340,12 @@ public class BookMarkListModel extends Model {
         else {
           BookmarkManager.getInstance().removeBookmarkByNumber(contentsBean.getItemNo(), contentsBean.getListItemNo());
         }
-        onResult(new Event.Builder(Event.SUCCESS).integer(Event.CONTENTS_BOOKMARK).bool(toChecked).index(index).build());
+        onResult(new Event.Builder(Event.SUCCESS).integer(Event.CONTENTS_BOOKMARK).bool(toChecked).index(viewListIndex).build());
       }
 
       @Override
       public void onApiError(String errorMessage, APIError error) {
-        onResult(new Event.Builder(Event.ERROR).integer(Event.CONTENTS_BOOKMARK).bool(toChecked).index(index).string(errorMessage).build());
+        onResult(new Event.Builder(Event.ERROR).integer(Event.CONTENTS_BOOKMARK).bool(toChecked).index(viewListIndex).string(errorMessage).build());
       }
     });
   }

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

@@ -97,6 +97,8 @@ public class BookMarkListPresenter extends Presenter<BookMarkListModel, IBookMar
   @Override
   protected void onEventInternal(Event event) {
     int index;
+    int dataIndex;
+    int viewListIndex;
     ListItemNumberBean listItemNumberBean;
     switch (event.getEventId()) {
       case Event.CONTENTS:
@@ -113,13 +115,15 @@ public class BookMarkListPresenter extends Presenter<BookMarkListModel, IBookMar
         break;
       case Event.BOOKMARK:
         listItemNumberBean = event.fromJson(ListItemNumberBean.class);
-        index = model.getItemIndex(listItemNumberBean.getItemNo(), listItemNumberBean.getListItemNo());
-        model.updateBookmarked(index);
+        viewListIndex = event.getIndex();
+        dataIndex = model.getItemIndex(listItemNumberBean.getItemNo(), listItemNumberBean.getListItemNo());
+        model.updateBookmarked(dataIndex, viewListIndex);
         break;
       case Event.LIKE:
+        viewListIndex = event.getIndex();
         listItemNumberBean = event.fromJson(ListItemNumberBean.class);
-        index = model.getItemIndex(listItemNumberBean.getItemNo(), listItemNumberBean.getListItemNo());
-        model.updateLiked(index);
+        dataIndex = model.getItemIndex(listItemNumberBean.getItemNo(), listItemNumberBean.getListItemNo());
+        model.updateLiked(dataIndex, viewListIndex);
         break;
       case Event.SORT:
         Log.i("APP# BookMarkListPresenter | onEventInternal", "|===================> " + event);
@@ -152,11 +156,9 @@ public class BookMarkListPresenter extends Presenter<BookMarkListModel, IBookMar
       case Event.SUCCESS:
         if (integer == Event.CONTENTS_BOOKMARK) {
           {}// 북마크의 북마크(체크박스)
-          //view.setBookmarkContentsBookmarked(event.getIndex(), event.getBool());
         }
         else if (integer == Event.CONTENTS_LIKE) {
           {}// 북마크의 좋아요(체크박스)
-          // view.setBookmarkContentsLiked(event.getIndex(), event.getBool());
         }
         else {
           doubleChecker.checkSecond();

+ 2 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/bookmark/IBookMarkListView.java

@@ -21,9 +21,9 @@ public interface IBookMarkListView extends IView {
 
   void updateContents(List<BookmarkBean> categorizedBookmarkList);
 
-  void setBookmarkContentsBookmarked(int index, boolean isChecked);
+  void setBookmarkContentsBookmarked(int viewListIndex, boolean isChecked);
 
-  void setBookmarkContentsLiked(int index, boolean isChecked);
+  void setBookmarkContentsLiked(int viewListIndex, boolean isChecked);
 
   void setSort(int sort);