Просмотр исходного кода

Merge branch 'develop' of https://github.com/swict/LifePlusAndroid into develop

hyodong.min 7 лет назад
Родитель
Сommit
e07b7ba870

+ 4 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/activity/FAQActivity.java

@@ -1,6 +1,7 @@
 package kr.co.zumo.app.lifeplus.activity;
 
 import android.os.Bundle;
+import android.support.design.widget.FloatingActionButton;
 import android.support.design.widget.TabLayout;
 import android.support.v4.view.ViewPager;
 
@@ -28,6 +29,7 @@ public class FAQActivity extends ActivityBase<FAQPresenter> implements IFAQView
   private TabLayout tabLayoutFaq;
   private ViewPager viewPagerFaq;
   private FAQPagerAdapter faqPagerAdapter;
+  private FloatingActionButton buttonWriteFAQ;
 
   @Override
   void onAfterCreate(Bundle savedInstanceState) {
@@ -37,6 +39,8 @@ public class FAQActivity extends ActivityBase<FAQPresenter> implements IFAQView
     viewPagerFaq = findViewById(R.id.faq_view_pager);
     tabLayoutFaq.setTabGravity(TabLayout.GRAVITY_FILL);
 
+    buttonWriteFAQ = findViewById(R.id.button_write_faq);
+    buttonWriteFAQ.setOnClickListener(view -> {});
   }
 
   @Override

+ 159 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/faq/MyFAQExpandableListViewAdapter.java

@@ -0,0 +1,159 @@
+package kr.co.zumo.app.lifeplus.view.fragment.faq;
+
+import android.support.annotation.NonNull;
+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;
+
+import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.bean.api.FAQBean;
+
+/**
+ * MyFAQExpandableListViewAdapter
+ * <pre>
+ * </pre>
+ *
+ * @author 하세미
+ * @version 1.0
+ * @history 하세미   [2018-10-15]   [최초 작성]
+ * @since 2018-10-15
+ */
+public class MyFAQExpandableListViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
+
+  private RecyclerView recyclerView;
+  private List<FAQBean> myFAQList;
+
+  public MyFAQExpandableListViewAdapter(List<FAQBean> myFAQList) {
+    this.myFAQList = myFAQList;
+  }
+
+  @Override
+  public void onAttachedToRecyclerView(RecyclerView recyclerView) {
+    super.onAttachedToRecyclerView(recyclerView);
+    this.recyclerView = recyclerView;
+  }
+
+
+  @NonNull
+  @Override
+  public RecyclerView.ViewHolder 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);
+  }
+
+  private MyFAQExpandableListViewAdapter.MyFAQExpandableViewHolder openedHolder = null;
+  private FAQBean openedBean = null;
+
+  @Override
+  public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
+    MyFAQExpandableListViewAdapter.MyFAQExpandableViewHolder viewHolder = ((MyFAQExpandableListViewAdapter.MyFAQExpandableViewHolder) holder);
+    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);
+      }
+    });
+
+    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);
+      }
+    });
+  }
+
+  @Override
+  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);
+    }
+
+  }
+}

+ 60 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/faq/MyFAQFragment.java

@@ -0,0 +1,60 @@
+package kr.co.zumo.app.lifeplus.view.fragment.faq;
+
+import android.app.Fragment;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+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;
+import kr.co.zumo.app.lifeplus.bean.api.FAQBean;
+
+/**
+ * MyFAQFragment
+ * <pre>
+ * </pre>
+ *
+ * @author 하세미
+ * @version 1.0
+ * @history 하세미   [2018-10-15]   [최초 작성]
+ * @since 2018-10-15
+ */
+public class MyFAQFragment extends Fragment {
+
+  private RecyclerView myFAQList;
+  private List<FAQBean> data;
+
+  @Override
+  public void onCreate(@Nullable Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+
+  }
+
+  @Nullable
+  @Override
+  public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+    View view = inflater.inflate(R.layout.fragment_my_faq, container, false);
+    setMyFAQList();
+    myFAQList = view.findViewById(R.id.expandable_list_view_my_faq);
+    myFAQList.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
+    MyFAQExpandableListViewAdapter adapter = new MyFAQExpandableListViewAdapter(data);
+    myFAQList.setAdapter(adapter);
+    return view;
+  }
+
+  public void setMyFAQList(){
+
+    data = new ArrayList<>();
+    data.add(new FAQBean(1,"혜택", "버킷리스트 등록했는데 완료한거 어떻...", "답변", "2018.08.13" ));
+    data.add(new FAQBean(2,"회원", "질문2", "답변", "2018.08.13" ));
+    data.add(new FAQBean(3,"기타", "질문3", "답변", "2018.08.13" ));
+  }
+
+}

+ 22 - 0
app/src/main/res/layout/fragment_my_faq.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ android:orientation="vertical"
+  xmlns:android="http://schemas.android.com/apk/res/android"
+  android:layout_width="match_parent"
+  android:layout_height="match_parent">
+
+
+  <android.support.v7.widget.RecyclerView
+    android:id="@+id/expandable_list_view_my_faq"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_marginBottom="10dp"
+    android:layout_marginLeft="25dp"
+    android:layout_marginRight="25dp"
+    android:layout_marginTop="23dp"
+    android:divider="@color/CFFFFFF"
+    android:dividerHeight="50dp">
+
+  </android.support.v7.widget.RecyclerView>
+
+</LinearLayout>

+ 137 - 0
app/src/main/res/layout/my_faq_contents.xml

@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+  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="match_parent"
+  android:layout_height="wrap_content"
+  android:background="@drawable/faq_answer_border"
+  android:orientation="vertical">
+
+  <RelativeLayout
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingStart="23dp"
+    android:paddingTop="23dp"
+    android:paddingBottom="23dp">
+
+    <TextView
+      android:id="@+id/text_view_my_faq_category"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_alignParentStart="true"
+      android:layout_alignParentTop="true"
+      android:lineSpacingExtra="4sp"
+      android:textColor="@color/C999999"
+      android:textSize="10sp"
+      tools:text="회원"/>
+
+    <TextView
+      android:id="@+id/text_view_my_faq_question"
+      android:layout_width="317dp"
+      android:layout_height="wrap_content"
+      android:layout_below="@+id/text_view_my_faq_category"
+      android:layout_alignParentStart="true"
+      android:layout_marginTop="5dp"
+      android:layout_marginEnd="50dp"
+      android:lineSpacingExtra="5sp"
+      android:maxLines="3"
+      android:text="@string/my_faq_question"
+      android:textColor="@color/C333333"
+      android:textSize="14sp"/>
+
+    <TextView
+      android:id="@+id/text_view_answer_success"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_below="@+id/text_view_my_faq_question"
+      android:layout_alignStart="@+id/text_view_my_faq_category"
+      android:layout_marginTop="6dp"
+      android:lineSpacingExtra="4sp"
+      android:text="@string/my_faq_answer_success"
+      android:textColor="@color/C000000"
+      android:visibility="gone"
+      tools:visibility="visible"
+      android:textSize="11sp"/>
+
+    <TextView
+      android:id="@+id/text_view_question_date"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_below="@+id/text_view_my_faq_question"
+      android:layout_marginStart="5dp"
+      android:layout_marginTop="6dp"
+      android:layout_toEndOf="@+id/text_view_answer_success"
+      android:lineSpacingExtra="4sp"
+      android:textColor="@color/C999999"
+      android:textSize="12sp"
+      tools:text="@string/my_faq_answer_success_date"/>
+
+    <ImageView
+      android:id="@+id/button_open_arrow"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_alignParentEnd="true"
+      android:layout_centerVertical="true"
+      android:layout_marginEnd="2dp"
+      android:paddingStart="20dp"
+      android:paddingTop="20dp"
+      android:paddingEnd="20dp"
+      android:paddingBottom="20dp"
+      android:scaleType="center"
+      app:srcCompat="@drawable/icon_openarrow"/>
+
+
+  </RelativeLayout>
+
+  <RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/layout_answer"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:visibility="gone"
+    tools:visibility="visible"
+    >
+
+    <LinearLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:orientation="vertical"
+      android:paddingStart="23dp"
+      android:paddingEnd="23dp"
+
+      >
+
+      <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginBottom="23dp"
+        android:background="@color/CE5E5E5"
+        />
+
+      <TextView
+        android:id="@+id/text_view_my_faq_answer"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:lineSpacingExtra="9sp"
+        android:text="@string/my_faq_answer"
+        android:textColor="@color/C999999"
+        android:textSize="12sp"
+        />
+
+      <TextView
+        android:id="@+id/text_view_answer_date"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="26dp"
+        android:layout_marginBottom="23dp"
+        android:lineSpacingExtra="4sp"
+        android:textColor="@color/C999999"
+        android:textSize="11sp"
+        tools:text="2018.07.20"
+        />
+    </LinearLayout>
+  </RelativeLayout>
+
+</LinearLayout>

+ 4 - 0
app/src/main/res/values/strings.xml

@@ -326,6 +326,10 @@
   <string name="menu_category3">쿠폰몰</string>
   <string name="introduce_life_plus">Lifeplus 소개</string>
 
+  <string name="my_faq_answer_success">답변완료</string>
+  <string name="my_faq_answer_success_date">2018.08.13</string>
+  <string name="my_faq_question">버킷리스트 등록했는데 완료한거 어떻...</string>
+  <string name="my_faq_answer">안녕하세요. 라이프플러스 운영팀입니다.\n버킷리스트 서비스를 이용해주셔서 감사합니다.\n아직 지원되지 않지만 향 후 고객님의 소중한 의견 참고하여 반영하도록 하겠습니다. 다른 궁금하신 사항이나 요청이 있으시면 언제든지 문의 남겨주세요.\n행복한 하루되세요.</string>
 
 
   <string name="setting">설정</string>