浏览代码

[FAQ][Common] 나의 문의내역 보기 페이지 뷰홀더 클래스 분리 및 선택시 이벤트 설정

Hasemi 7 年之前
父节点
当前提交
53354a696d

+ 24 - 99
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/faq/MyFAQExpandableListViewAdapter.java

@@ -5,9 +5,6 @@ import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
 
 import java.util.List;
 
@@ -24,7 +21,7 @@ import kr.co.zumo.app.lifeplus.bean.api.FAQBean;
  * @history 하세미   [2018-10-15]   [최초 작성]
  * @since 2018-10-15
  */
-public class MyFAQExpandableListViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
+public class MyFAQExpandableListViewAdapter extends RecyclerView.Adapter<MyFAQExpandableViewHolder> {
 
   private RecyclerView recyclerView;
   private List<FAQBean> myFAQList;
@@ -42,67 +39,39 @@ public class MyFAQExpandableListViewAdapter extends RecyclerView.Adapter<Recycle
 
   @NonNull
   @Override
-  public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+  public MyFAQExpandableViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
     View view = LayoutInflater
       .from(parent.getContext())
       .inflate(R.layout.my_faq_contents, parent, false);
-    return new MyFAQExpandableListViewAdapter.MyFAQExpandableViewHolder(view);
+    return new MyFAQExpandableViewHolder(view);
   }
 
-  private MyFAQExpandableListViewAdapter.MyFAQExpandableViewHolder openedHolder = null;
-  private FAQBean openedBean = null;
+
+  private MyFAQExpandableViewHolder openedHolder = null;
+  private int openedIndex = -1;
 
   @Override
-  public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
-    MyFAQExpandableListViewAdapter.MyFAQExpandableViewHolder viewHolder = ((MyFAQExpandableListViewAdapter.MyFAQExpandableViewHolder) holder);
+  public void onBindViewHolder(@NonNull MyFAQExpandableViewHolder holder, int position) {
     FAQBean bean = myFAQList.get(position);
-    viewHolder.bind(bean);
-    viewHolder.textViewQuestion.setOnClickListener(new View.OnClickListener() {
-      @Override
-      public void onClick(View view) {
-        boolean isExpanded = bean.isExpanded();
-        bean.setExpanded(!isExpanded);
-        viewHolder.changed(bean.isExpanded());
-
-        if (null != openedHolder) {
-          openedBean.setExpanded(false);
-          openedHolder.changed(false);
-          openedBean = null;
-          openedHolder = null;
-        }
-
-        if (bean.isExpanded()) {
-          openedHolder = viewHolder;
-          openedBean = bean;
-        }
-
-        // 홀더의 영역이 뷰안으로 들어오도록 스크롤 시킨다.
-        recyclerView.scrollToPosition(position);
+    MyFAQExpandableViewHolder viewHolder = holder;
+    viewHolder.bind(bean, event -> {
+
+      if (null != openedHolder) {
+        FAQBean openedBean = myFAQList.get(openedIndex);
+        openedBean.setExpanded(false);
+        openedHolder.changed(false);
+        openedHolder = null;
       }
-    });
 
-    viewHolder.buttonArrow.setOnClickListener(new View.OnClickListener() {
-      @Override
-      public void onClick(View view) {
-        boolean isExpanded = bean.isExpanded();
-        bean.setExpanded(!isExpanded);
-        viewHolder.changed(bean.isExpanded());
-
-        if (null != openedHolder) {
-          openedBean.setExpanded(false);
-          openedHolder.changed(false);
-          openedBean = null;
-          openedHolder = null;
-        }
-
-        if (bean.isExpanded()) {
-          openedHolder = viewHolder;
-          openedBean = bean;
-        }
-
-        // 홀더의 영역이 뷰안으로 들어오도록 스크롤 시킨다.
-        recyclerView.scrollToPosition(position);
+      int index = event.getInteger();
+      FAQBean selectedBean = myFAQList.get(index);
+      if (selectedBean.isExpanded()) {
+        openedHolder = viewHolder;
+        openedIndex = index;
       }
+
+      // 홀더의 영역이 뷰안으로 들어오도록 스크롤 시킨다.
+      recyclerView.scrollToPosition(index);
     });
   }
 
@@ -110,50 +79,6 @@ public class MyFAQExpandableListViewAdapter extends RecyclerView.Adapter<Recycle
   public int getItemCount() {
     return 3;
   }
+}
 
 
-  private class MyFAQExpandableViewHolder extends RecyclerView.ViewHolder {
-
-    private TextView textViewCategory;
-    private TextView textViewQuestion;
-    private TextView textViewAnswerSuccess;
-    private TextView textViewQuestionDate;
-    private ImageView buttonArrow;
-    private RelativeLayout layoutAnswer;
-    private TextView textViewAnswer;
-    private TextView textViewAnswerDate;
-
-    public MyFAQExpandableViewHolder(View itemView) {
-      super(itemView);
-      textViewCategory = itemView.findViewById(R.id.text_view_my_faq_category);
-      textViewQuestion = itemView.findViewById(R.id.text_view_my_faq_question);
-      textViewAnswerSuccess = itemView.findViewById(R.id.text_view_answer_success);
-      textViewQuestionDate = itemView.findViewById(R.id.text_view_question_date);
-      buttonArrow = itemView.findViewById(R.id.button_open_arrow);
-      layoutAnswer = itemView.findViewById(R.id.layout_answer);
-      textViewAnswer = itemView.findViewById(R.id.text_view_my_faq_answer);
-      textViewAnswerDate = itemView.findViewById(R.id.text_view_answer_date);
-
-    }
-
-    private void bind(FAQBean faqBean) {
-      textViewAnswerSuccess.setVisibility(View.VISIBLE);
-      textViewAnswerDate.setText(faqBean.getDate());
-      textViewQuestionDate.setText(faqBean.getDate());
-      textViewAnswer.setText(faqBean.getContents());
-      textViewQuestion.setText(faqBean.getTitle());
-      textViewCategory.setText(faqBean.getCategory());
-    }
-
-    private void changed(boolean isExpanded) {
-      if (isExpanded) {
-        layoutAnswer.setVisibility(View.VISIBLE);
-      }
-      else {
-        layoutAnswer.setVisibility(View.GONE);
-      }
-      buttonArrow.setImageResource(isExpanded ? R.drawable.icon_closearrow : R.drawable.icon_openarrow);
-    }
-
-  }
-}

+ 83 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/faq/MyFAQExpandableViewHolder.java

@@ -0,0 +1,83 @@
+package kr.co.zumo.app.lifeplus.view.screen.faq;
+
+import android.graphics.Typeface;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.bean.api.FAQBean;
+import kr.co.zumo.app.lifeplus.view.Event;
+import kr.co.zumo.app.lifeplus.view.IEventListener;
+
+/**
+ * MyFAQExpandableViewHolder
+ * <pre>
+ * </pre>
+ *
+ * @author 하세미
+ * @version 1.0
+ * @history 하세미   [2018-10-31]   [최초 작성]
+ * @since 2018-10-31
+ */
+public class MyFAQExpandableViewHolder extends RecyclerView.ViewHolder {
+
+  private TextView textViewCategory;
+  private TextView textViewQuestion;
+  private TextView textViewAnswerSuccess;
+  private TextView textViewQuestionDate;
+  private ImageView buttonArrow;
+  private RelativeLayout layoutAnswer;
+  private TextView textViewAnswer;
+  private TextView textViewAnswerDate;
+
+  public MyFAQExpandableViewHolder(View itemView) {
+    super(itemView);
+    textViewCategory = itemView.findViewById(R.id.text_view_my_faq_category);
+    textViewQuestion = itemView.findViewById(R.id.text_view_my_faq_question);
+    textViewAnswerSuccess = itemView.findViewById(R.id.text_view_answer_success);
+    textViewQuestionDate = itemView.findViewById(R.id.text_view_question_date);
+    buttonArrow = itemView.findViewById(R.id.button_open_arrow);
+    layoutAnswer = itemView.findViewById(R.id.layout_answer);
+    textViewAnswer = itemView.findViewById(R.id.text_view_my_faq_answer);
+    textViewAnswerDate = itemView.findViewById(R.id.text_view_answer_date);
+
+  }
+
+  public void bind(FAQBean bean, IEventListener listener) {
+    textViewAnswerSuccess.setVisibility(View.VISIBLE);
+    textViewAnswerDate.setText(bean.getDate());
+    textViewQuestionDate.setText(bean.getDate());
+    textViewAnswer.setText(bean.getContents());
+    textViewQuestion.setText(bean.getTitle());
+    textViewCategory.setText(bean.getCategory());
+
+    View.OnClickListener clickListener = view -> {
+      boolean isExpanded = bean.isExpanded();
+      bean.setExpanded(!isExpanded);
+      changed(bean.isExpanded());
+
+      listener.onEvent(new Event.Builder(Event.CLICK).integer(getAdapterPosition()).build());
+
+    };
+
+    textViewQuestion.setOnClickListener(clickListener);
+
+    buttonArrow.setOnClickListener(clickListener);
+  }
+
+  public void changed(boolean isExpanded) {
+    if (isExpanded) {
+      layoutAnswer.setVisibility(View.VISIBLE);
+      textViewQuestion.setTypeface(null, Typeface.BOLD);
+    }
+    else {
+      layoutAnswer.setVisibility(View.GONE);
+      textViewQuestion.setTypeface(null, Typeface.NORMAL);
+    }
+    buttonArrow.setImageResource(isExpanded ? R.drawable.icon_closearrow : R.drawable.icon_openarrow);
+  }
+
+}

+ 7 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/faq/MyFAQPresenter.java

@@ -57,6 +57,13 @@ public class MyFAQPresenter extends Presenter<BlankModel, IView> {
 
   @Override
   protected void onEventInternal(Event event) {
+    switch (event.getEventId()) {
+      case Event.FAQ:
+        onCommand(new FragmentBackStackChangeCommand(ScreenID.FAQ_WRITE, ScreenID.DIRECTION_NEXT));
+        break;
+      default:
+        break;
+    }
 
   }