Bläddra i källkod

[이벤트][Common] 선택형 View 진행 중

hyodong.min 6 år sedan
förälder
incheckning
e75cccc9e3

+ 0 - 72
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/EventDetailAdapter.java

@@ -41,41 +41,6 @@ public abstract class EventDetailAdapter extends RecyclerView.Adapter<EventDetai
   @NonNull
   @Override
   public abstract EventDetailView onCreateViewHolder(@NonNull ViewGroup parent, int viewType);
-//  {
-//    View view;
-//    switch (viewType) {
-//      case TYPE_EVENT_COVER:
-//        view = inflater.inflate(R.layout.event_enter_type_cover, parent, false);
-//        return new EventDetailCoverHolder(view);
-//      case TYPE_EVENT_ENTRY_IMAGE:
-//        view = inflater.inflate(R.layout.event_enter_type_image, parent, false);
-//        return new EventDetailEntryImageHolder(view);
-//      case TYPE_EVENT_ENTRY_VIDEO:
-//        view = inflater.inflate(R.layout.event_enter_type_video, parent, false);
-//        return new EventDetailEntryVideoHolder(view);
-//      case TYPE_EVENT_ENTER_LAST:
-//        view = inflater.inflate(R.layout.event_enter_type_last, parent, false);
-//        return new EventDetailEntryHolder(view);
-//      case TYPE_EVENT_SELECT_COMBINED:
-//        view = inflater.inflate(R.layout.event_select_type_combined, parent, false);
-//        return new EventSelectPageCombinedHolder(view);
-//      case TYPE_EVENT_SELECT_TEXT:
-//        view = inflater.inflate(R.layout.event_select_type_text, parent, false);
-//        return new EventSelectPageTextHolder(view);
-//      case TYPE_EVENT_SELECT_RESULT:
-//        view = inflater.inflate(R.layout.event_select_type_result, parent, false);
-//        return new EventSelectResultHolder(view);
-//      case TYPE_EVENT_RECOMMEND_DEFAULT:
-//        view = inflater.inflate(R.layout.event_select_type_recommend_default, parent, false);
-//        return new EventSelectRecommendDefaultHolder(view);
-//      case TYPE_EVENT_RECOMMEND_TAG:
-//        view = inflater.inflate(R.layout.event_select_type_recommend_tag, parent, false);
-//        return new EventSelectRecommendTagHolder(view);
-//      default:
-//        break;
-//    }
-//    return null;
-//  }
 
   @Override
   public abstract void onBindViewHolder(@NonNull EventDetailView holder, int position);
@@ -85,42 +50,5 @@ public abstract class EventDetailAdapter extends RecyclerView.Adapter<EventDetai
 
   @Override
   public abstract int getItemViewType(int position);
-//  {
-//    //커버는 모두 동일
-//    if (position == 0) {
-//      return TYPE_EVENT_COVER;
-//    }
-//
-//    if (type == 0) { //첫번째 인덱스는 응모형 임시구현
-//      switch (position) {
-//        case 2:
-//          return TYPE_EVENT_ENTRY_VIDEO;
-//        case 4:
-//          return TYPE_EVENT_ENTER_LAST;
-//        default:
-//          return TYPE_EVENT_ENTRY_IMAGE;
-//      }
-//    }
-//    else if (type == 1) { //두번째 인덱스는 항목선택 복합형 임시구현
-//      switch (position) {
-//        case 3:
-//          return TYPE_EVENT_SELECT_RESULT;
-//        case 4:
-//          return TYPE_EVENT_RECOMMEND_DEFAULT;
-//        default:
-//          return TYPE_EVENT_SELECT_COMBINED;
-//      }
-//    }
-//    else { //항목선택 글자형
-//      switch (position) {
-//        case 3:
-//          return TYPE_EVENT_SELECT_RESULT;
-//        case 4:
-//          return TYPE_EVENT_RECOMMEND_TAG;
-//        default:
-//          return TYPE_EVENT_SELECT_TEXT;
-//      }
-//    }
-//  }
 
 }

+ 8 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/EventDetailView.java

@@ -71,9 +71,16 @@ public abstract class EventDetailView<T extends EventPageBean> extends RecyclerV
   public void startAnimation(int index) { }
 
   /**
-   * 참여하기 버튼 비활성
+   * 응모형 - 참여하기 버튼 비활성
    */
   public void setDisableButton() {
     buttonEntry.setEnabled(false);
   }
+
+  /**
+   * 선택형 - 선택 버튼 비활성
+   */
+  public void detatchEvent() {
+
+  }
 }

+ 2 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/IEventDetailSelectView.java

@@ -18,8 +18,6 @@ public interface IEventDetailSelectView extends IEventDetailView {
 
   void draw(List<EventPageBean> eventPageBeans);
 
-  void setDisableEntryButton();
-
   void setProgress(int percent);
 
   void setProgressVisible(boolean isVisible);
@@ -27,4 +25,6 @@ public interface IEventDetailSelectView extends IEventDetailView {
   void setScrollDisabled();
 
   void setBlackActionBar();
+
+  void detachEvent(int pageIndex);
 }

+ 4 - 8
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/select/EventDetailSelectFragment.java

@@ -162,14 +162,10 @@ public class EventDetailSelectFragment extends EventDetailBaseFragment<EventDeta
     recyclerViewEventDetail.setAdapter(adapter);
   }
 
-  @Override
-  public void setDisableEntryButton() {
-    int itemCount = recyclerViewEventDetail.getAdapter().getItemCount();
-    for (int i = 0; i < itemCount; ++i) {
-      EventDetailView eventDetailView = (EventDetailView) recyclerViewEventDetail.findViewHolderForAdapterPosition(i);
-      if (null != eventDetailView) {
-        eventDetailView.setDisableButton();
-      }
+  public void detachEvent(int pageIndex) {
+    EventDetailView eventDetailView = (EventDetailView) recyclerViewEventDetail.findViewHolderForAdapterPosition(pageIndex);
+    if (null != eventDetailView) {
+      eventDetailView.setDisableButton();
     }
   }
 }

+ 7 - 4
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/select/EventDetailSelectPresenter.java

@@ -114,10 +114,13 @@ public class EventDetailSelectPresenter extends Presenter<EventDetailModel, IEve
     switch (event.getEventId()) {
       case Event.CLICK:
         // 항목 선택
-
-        // todo 항목 선택 할 때 비회원 확인
-
-        view.setScrollToPosition(index + 1);
+        Log.d("APP# EventDetailSelectPresenter | onEventInternal", "|" + "index: " + event.getIndex() + ", int: " + event.getInteger() + ", b: " + event.getBool());
+        if (model.isActiveMember()) {
+          view.setScrollToPosition(index + 1);
+        }
+        else {
+          showPopupForGuest();
+        }
         break;
       case Event.RECOMMEND:
         // TODO: 사용자 선택 값에 따른 추천 컨텐츠 보여주기 

+ 0 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/select/EventSelectCombinedTwoLineView.java

@@ -76,7 +76,6 @@ public class EventSelectCombinedTwoLineView extends ConstraintLayout implements
 
   }
 
-
   @SuppressLint("ClickableViewAccessibility")
   public void attachEvent() {
     this.setOnTouchListener((v, event) -> {

+ 37 - 9
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/select/EventSelectPageTextHolder.java

@@ -1,6 +1,7 @@
 package kr.co.zumo.app.lifeplus.view.screen.event.select;
 
 import android.view.View;
+import android.widget.Checkable;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
@@ -12,6 +13,7 @@ import kr.co.zumo.app.lifeplus.bean.api.EventAnswerItemBean;
 import kr.co.zumo.app.lifeplus.bean.api.EventPageBean;
 import kr.co.zumo.app.lifeplus.bean.api.EventQuestionBean;
 import kr.co.zumo.app.lifeplus.util.ResourceUtil;
+import kr.co.zumo.app.lifeplus.util.StringUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.IEventListener;
 import kr.co.zumo.app.lifeplus.view.screen.event.EventDetailView;
@@ -61,19 +63,45 @@ public class EventSelectPageTextHolder extends EventDetailView {
       if (null != list) {
         int len = list.size();
         EventAnswerItemBean answerItemBean;
+        View eventView;
+        boolean isVertical = false;
         for (int i = 0; i < len; ++i) {
           answerItemBean = list.get(i);
-          // todo 서브  타이틀 있을 때는 다른 뷰 이용
-          // todo 길이 길어지면 세로 정렬
-          EventSelectTextView selectView = new EventSelectTextView(itemView.getContext());
-          selectView.init(itemView.getContext(), answerItemBean.getAnswerItemName());
-
-          int finalI = i;
-          selectView.setOnClickListener(view -> {
-            listener.onEvent(new Event.Builder(Event.CLICK).index(getAdapterPosition()).integer(finalI).build());
+          final int finalI = i;
+          final Checkable check;
+          // 서브  타이틀 있을 때는 다른 뷰 이용
+          if (StringUtil.isFull(answerItemBean.getAnswerItemSubName())) {
+            // 세로 정렬
+            EventSelectCombinedTwoLineView selectView = new EventSelectCombinedTwoLineView(itemView.getContext());
+            selectView.init(itemView.getContext());
+            selectView.setContents(answerItemBean.getAnswerItemName(), answerItemBean.getAnswerItemSubName());
+
+            eventView = selectView;
+            check = selectView;
+            isVertical = true;
+          }
+          else {
+            EventSelectTextView selectView = new EventSelectTextView(itemView.getContext());
+            String title = answerItemBean.getAnswerItemName();
+            selectView.init(itemView.getContext(), title);
+
+            eventView = selectView;
+            check = selectView;
+
+            // 길이 길어지면 세로 정렬, 5자 이상일 경우
+            if (StringUtil.isFull(title) && title.length() > 4) {
+              isVertical = true;
+            }
+          }
+          eventView.setOnClickListener(view -> {
+            listener.onEvent(new Event.Builder(Event.CLICK).index(getAdapterPosition()).integer(finalI).bool(check.isChecked()).build());
           });
 
-          layoutSelectArea.addView(selectView);
+          layoutSelectArea.addView(eventView);
+        }
+
+        if (isVertical) {
+          layoutSelectArea.setOrientation(LinearLayout.VERTICAL);
         }
       }
     }

+ 8 - 1
app/src/main/res/layout/event_combined_two_line_select_view.xml

@@ -6,7 +6,15 @@
   android:id="@+id/layout_background"
   android:layout_width="212dp"
   android:layout_height="54dp"
+  android:layout_marginStart="4dp"
+  android:layout_marginTop="4dp"
+  android:layout_marginEnd="4dp"
+  android:layout_marginBottom="4dp"
   android:background="@drawable/event_two_line_check_off"
+  app:layout_constraintBottom_toBottomOf="parent"
+  app:layout_constraintEnd_toEndOf="parent"
+  app:layout_constraintStart_toStartOf="parent"
+  app:layout_constraintTop_toTopOf="parent"
   tools:background="@color/C333333">
 
   <TextView
@@ -53,6 +61,5 @@
     app:layout_constraintStart_toStartOf="parent"
     app:layout_constraintTop_toBottomOf="@+id/text_view_title"
     tools:text="특별한 소스와 건강을 책임지는 요리!특별한 소스와 건강을 책임지는 요리!특별한 소스와 건강을 책임지는 요리!특별한 소스와 건강을 책임지는 요리!특별한 소스와 건강을 책임지는 요리!특별한 소스와 건강을 책임지는 요리!특별한 소스와 건강을 책임지는 요리!"
-    tools:visibility="gone"
     />
 </android.support.constraint.ConstraintLayout>

+ 11 - 6
app/src/main/res/layout/event_combined_type_select_view.xml

@@ -5,16 +5,20 @@
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
+  android:layout_marginStart="4dp"
+  android:layout_marginTop="4dp"
+  android:layout_marginEnd="4dp"
+  android:layout_marginBottom="4dp"
+  app:layout_constraintBottom_toBottomOf="parent"
+  app:layout_constraintEnd_toEndOf="parent"
+  app:layout_constraintStart_toStartOf="parent"
+  app:layout_constraintTop_toTopOf="parent"
   tools:background="@color/C999999">
 
   <CheckBox
     android:id="@+id/check_box"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
-    android:layout_marginStart="3dp"
-    android:layout_marginTop="4dp"
-    android:layout_marginEnd="3dp"
-    android:layout_marginBottom="4dp"
     android:background="@drawable/event_select_custom_radio_selector"
     android:button="@null"
     android:lineSpacingExtra="4sp"
@@ -27,9 +31,10 @@
     android:textSize="12sp"
     app:layout_constraintBottom_toBottomOf="parent"
     app:layout_constraintEnd_toEndOf="parent"
+    app:layout_constraintHorizontal_bias="1.0"
     app:layout_constraintStart_toStartOf="parent"
     app:layout_constraintTop_toTopOf="parent"
+    app:layout_constraintVertical_bias="0.0"
     tools:checked="true"
-    tools:text="#따뜻한 분위기"
-    />
+    tools:text="#따뜻한 분위기"/>
 </android.support.constraint.ConstraintLayout>