瀏覽代碼

[마이][Bug] 버킷리스트 추가 화면 수정

hyodong.min 7 年之前
父節點
當前提交
8cef881f18

+ 28 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/model/MyBucketListModel.java

@@ -1,5 +1,11 @@
 package kr.co.zumo.app.lifeplus.model;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.bean.TextImageBean;
+
 /**
  * MyBucketListModel
  * <pre>
@@ -10,7 +16,28 @@ package kr.co.zumo.app.lifeplus.model;
  * @history 하세미   [2018-10-18]   [최초 작성]
  * @since 2018-10-18
  */
-public class MyBucketListModel extends  Model {
+public class MyBucketListModel extends Model {
+
+  private List<TextImageBean> myBucketListData;
+
+  public MyBucketListModel() {
+    myBucketListData = new ArrayList<>();
+    myBucketListData.add(new TextImageBean(R.drawable.img_select_bg_1, R.string.bucket_select_text1));
+    myBucketListData.add(new TextImageBean(R.drawable.img_select_bg_2, R.string.bucket_select_text2));
+    myBucketListData.add(new TextImageBean(R.drawable.img_select_bg_3, R.string.bucket_select_text3));
+    myBucketListData.add(new TextImageBean(R.drawable.img_select_bg_4, R.string.bucket_select_text4));
+    myBucketListData.add(new TextImageBean(R.drawable.img_select_bg_5, R.string.bucket_select_text5));
+    myBucketListData.add(new TextImageBean(R.drawable.img_select_bg_6, R.string.bucket_select_text1));
+    myBucketListData.add(new TextImageBean(R.drawable.img_select_bg_7, R.string.bucket_select_text2));
+    myBucketListData.add(new TextImageBean(R.drawable.img_select_bg_8, R.string.bucket_select_text3));
+    myBucketListData.add(new TextImageBean(R.drawable.img_select_bg_9, R.string.bucket_select_text4));
+    myBucketListData.add(new TextImageBean(R.drawable.img_select_bg_10, R.string.bucket_select_text5));
+  }
+
+  public List<TextImageBean> getMyBucketListData() {
+    return myBucketListData;
+  }
+
   @Override
   protected void destroyInternal() {
 

+ 13 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/IMyBucketListView.java

@@ -1,5 +1,12 @@
 package kr.co.zumo.app.lifeplus.view;
 
+import android.support.annotation.DrawableRes;
+import android.support.annotation.StringRes;
+
+import java.util.List;
+
+import kr.co.zumo.app.lifeplus.bean.TextImageBean;
+
 /**
  * IMyBucketListView
  * <pre>
@@ -25,4 +32,10 @@ public interface IMyBucketListView extends IView {
    * @param isBig
    */
   void setLayoutSize(boolean isBig);
+
+  void changeBackground(@DrawableRes int drawableId);
+
+  void changeDescription(@StringRes int stringId);
+
+  void init(List<TextImageBean> myBucketListData);
 }

+ 54 - 4
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/my/bucketlist/AddMyBucketListAdapter.java

@@ -7,6 +7,7 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import kr.co.zumo.app.R;
@@ -26,11 +27,15 @@ public class AddMyBucketListAdapter extends RecyclerView.Adapter<AddMyBucketList
 
   private Context context;
   private List<TextImageBean> data;
+  private List<AddMyBucketListViewHolder> holders;
+  private IClickListener listener;
 
-
-  public AddMyBucketListAdapter(Context context, List<TextImageBean> data) {
+  public AddMyBucketListAdapter(Context context, List<TextImageBean> data, IClickListener listener) {
     this.context = context;
     this.data = data;
+    this.listener = listener;
+
+    holders = new ArrayList<>();
   }
 
   @NonNull
@@ -43,11 +48,56 @@ public class AddMyBucketListAdapter extends RecyclerView.Adapter<AddMyBucketList
   @Override
   public void onBindViewHolder(@NonNull AddMyBucketListViewHolder holder, int position) {
     TextImageBean bean = data.get(position);
-    holder.doDataSetting(bean);
+    holder.bind(bean, index -> {
+      setFocus(index);
+      this.listener.onClick(index);
+    });
+  }
+
+  private void setFocus(int index) {
+    int len = data.size();
+    TextImageBean bean;
+    for (int i = 0; i < len; ++i) {
+      bean = data.get(i);
+      bean.setClicked(i == index);
+    }
+
+    AddMyBucketListViewHolder holder;
+    int idx;
+    len = holders.size();
+    for (int i = 0; i < len; ++i) {
+      holder = holders.get(i);
+      idx = holder.getIndex();
+      bean = data.get(idx);
+
+      holder.select(bean.isClicked());
+    }
+  }
+
+  @Override
+  public void onViewAttachedToWindow(@NonNull AddMyBucketListViewHolder holder) {
+    holder.attach(data.get(holder.getIndex()));
+    holders.add(holder);
+//    Log.i("APP# AddMyBucketListAdapter | onViewAttachedToWindow", "| ----> " + holders.size());
+  }
+
+  @Override
+  public void onViewDetachedFromWindow(@NonNull AddMyBucketListViewHolder holder) {
+    holder.detach(data.get(holder.getIndex()));
+    holders.remove(holder);
+//    Log.i("APP# AddMyBucketListAdapter | onViewDetachedFromWindow", "| ----> " + holders.size());
   }
 
   @Override
   public int getItemCount() {
-    return 10;
+    return data.size();
+  }
+
+
+  /***********************************
+   * interface
+   ***********************************/
+  interface IClickListener {
+    void onClick(int index);
   }
 }

+ 21 - 19
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/my/bucketlist/AddMyBucketListFragment.java

@@ -15,7 +15,6 @@ import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import kr.co.zumo.app.R;
@@ -44,7 +43,6 @@ public class AddMyBucketListFragment extends FragmentBase<MyBucketListPresenter>
   private TextView textViewMyBucketDetail;
   private Button buttonAddMyBucket;
   private ImageView imageViewBack;
-  private List<TextImageBean> addMyBucketListData;
 
   @Nullable
   @Override
@@ -93,19 +91,26 @@ public class AddMyBucketListFragment extends FragmentBase<MyBucketListPresenter>
     });
 
     //등록버튼 클릭시
-    buttonAddMyBucket.setOnClickListener(view -> presenter.onEvent(new Event.Builder(Event.CLICK).build()));
+    buttonAddMyBucket.setOnClickListener(view -> presenter.onEvent(new Event.Builder(Event.CONFIRM).build()));
     recyclerViewImageList = findViewById(R.id.recycler_view_image_list);
 
-    doDummyData();
+    presenter.onEvent(new Event.Builder(Event.INIT).build());
 
-    AddMyBucketListAdapter addMyBucketListAdapter = new AddMyBucketListAdapter(getActivity(), addMyBucketListData);
+  }
+
+  public void init(List<TextImageBean> myBucketListData) {
+    AddMyBucketListAdapter addMyBucketListAdapter = new AddMyBucketListAdapter(getActivity(), myBucketListData, new AddMyBucketListAdapter.IClickListener() {
+      @Override
+      public void onClick(int index) {
+        presenter.onEvent(new Event.Builder(Event.CLICK).integer(index).build());
+      }
+    });
     recyclerViewImageList.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false));
     recyclerViewImageList.setAdapter(addMyBucketListAdapter);
 
     recyclerViewImageList.addOnLayoutChangeListener((view, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
       presenter.onLayoutChange(view, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom);
     });
-
   }
 
   @Override
@@ -120,19 +125,6 @@ public class AddMyBucketListFragment extends FragmentBase<MyBucketListPresenter>
     return new MyBucketListPresenter(getModel(MyBucketListModel.class), this);
   }
 
-  private void doDummyData() {
-    addMyBucketListData = new ArrayList<>();
-    addMyBucketListData.add(new TextImageBean(R.drawable.img_select_bg_1, R.string.bucket_select_text1));
-    addMyBucketListData.add(new TextImageBean(R.drawable.img_select_bg_2, R.string.bucket_select_text2));
-    addMyBucketListData.add(new TextImageBean(R.drawable.img_select_bg_3, R.string.bucket_select_text3));
-    addMyBucketListData.add(new TextImageBean(R.drawable.img_select_bg_4, R.string.bucket_select_text4));
-    addMyBucketListData.add(new TextImageBean(R.drawable.img_select_bg_5, R.string.bucket_select_text5));
-    addMyBucketListData.add(new TextImageBean(R.drawable.img_select_bg_6, R.string.bucket_select_text1));
-    addMyBucketListData.add(new TextImageBean(R.drawable.img_select_bg_7, R.string.bucket_select_text2));
-    addMyBucketListData.add(new TextImageBean(R.drawable.img_select_bg_8, R.string.bucket_select_text3));
-    addMyBucketListData.add(new TextImageBean(R.drawable.img_select_bg_9, R.string.bucket_select_text4));
-    addMyBucketListData.add(new TextImageBean(R.drawable.img_select_bg_10, R.string.bucket_select_text5));
-  }
 
   /**
    * 등록 버튼 보이기 안보이기
@@ -156,4 +148,14 @@ public class AddMyBucketListFragment extends FragmentBase<MyBucketListPresenter>
       textViewMyBucketDetail.setVisibility(isBig ? View.VISIBLE : View.GONE);
     });
   }
+
+  @Override
+  public void changeBackground(int drawableId) {
+
+  }
+
+  @Override
+  public void changeDescription(int stringId) {
+
+  }
 }

+ 60 - 7
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/my/bucketlist/AddMyBucketListViewHolder.java

@@ -1,7 +1,6 @@
 package kr.co.zumo.app.lifeplus.view.fragment.my.bucketlist;
 
 import android.support.v7.widget.RecyclerView;
-import android.util.Log;
 import android.view.View;
 import android.widget.ImageView;
 
@@ -29,15 +28,69 @@ public class AddMyBucketListViewHolder extends RecyclerView.ViewHolder {
     imageVieWCircleBorder = itemView.findViewById(R.id.image_view_select_border);
   }
 
-  public void doDataSetting(TextImageBean bean) {
+  /**
+   * by onBindViewHolder
+   *
+   * @param bean
+   * @param listener
+   */
+  public void bind(TextImageBean bean, IClickListener listener) {
     imageViewSelectImage.setImageResource(bean.getImageResource());
-    imageViewSelectImage.setOnClickListener(view -> onClickImage(bean));
+    imageViewSelectImage.setOnClickListener(view -> {
+      if (null != listener) {
+        listener.onClick(getIndex());
+      }
+    });
   }
 
-  private void onClickImage(TextImageBean bean) {
-    Log.w("APP# AddMyBucketListViewHolder | onClickImage", "|" + "onClick");
-    bean.setClicked(!bean.isClicked());
-    imageVieWCircleBorder.setImageResource(bean.isClicked()? R.drawable.image_circle_border : R.drawable.radio_uncheck );
+  /**
+   * 화면에 나타날 때
+   *
+   * @param bean
+   */
+  public void attach(TextImageBean bean) {
+    select(bean.isClicked());
+  }
+
+  /**
+   * 화면에서 사라질 때
+   *
+   * @param bean
+   */
+  public void detach(TextImageBean bean) {
+
+  }
+
+  /**
+   * 선택 표시
+   *
+   * @param isSelected
+   */
+  public void select(boolean isSelected) {
+    imageVieWCircleBorder.setImageResource(isSelected ? R.drawable.image_circle_border : R.drawable.radio_uncheck);
+  }
+
+  /**
+   * dispose
+   */
+  public void dispose() {
+    imageViewSelectImage.setOnClickListener(null);
+  }
+
+  /**
+   * index
+   *
+   * @return
+   */
+  public int getIndex() {
+    return getAdapterPosition();
+  }
+
+  /***********************************
+   * interface
+   ***********************************/
+  interface IClickListener {
+    void onClick(int index);
   }
 
 }

+ 8 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/MyBucketListPresenter.java

@@ -60,9 +60,16 @@ public class MyBucketListPresenter extends Presenter<MyBucketListModel, IMyBucke
   @Override
   protected void onEventInternal(Event event) {
     switch (event.getEventId()) {
-      case Event.CLICK:
+      case Event.CONFIRM:
         onCommand(new FragmentChangeCommand(ScreenID.BUCKET_HASH_TAG, ScreenID.DIRECTION_NEXT));
         break;
+      case Event.CLICK:
+        // 배경 변경 해줌
+
+        break;
+      case Event.INIT:
+        view.init(model.getMyBucketListData());
+        break;
       default:
         break;
     }

+ 2 - 2
app/src/main/res/drawable/image_circle_border.xml

@@ -7,6 +7,6 @@
     android:color="@color/CFFFFFF"/>
 
   <size
-    android:width="1dp"
-    android:height="1dp"/>
+    android:width="10dp"
+    android:height="10dp"/>
 </shape>

+ 4 - 4
app/src/main/res/layout/add_my_bucket_image_list.xml

@@ -3,16 +3,16 @@
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
-  android:layout_width="wrap_content"
-  android:layout_height="wrap_content">
+  android:layout_width="64dp"
+  android:layout_height="52dp"
+  android:paddingStart="6dp"
+  android:paddingEnd="6dp">
 
   <ImageView
     android:id="@+id/image_view_select_border"
     android:layout_width="52dp"
     android:layout_height="52dp"
     android:layout_gravity="center"
-    android:layout_marginStart="5dp"
-    android:layout_marginEnd="5dp"
     tools:src="@drawable/image_circle_border"/>
 
   <ImageView

+ 2 - 2
app/src/main/res/layout/fragment_add_my_bucket_list.xml

@@ -18,8 +18,8 @@
     android:id="@+id/edit_text_my_bucket"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:layout_marginStart="40dp"
-    android:layout_marginEnd="40dp"
+    android:layout_marginStart="20dp"
+    android:layout_marginEnd="20dp"
     android:background="@null"
     android:hint="@string/make_my_bucket_list"
     android:imeOptions="normal"