|
@@ -1,14 +1,10 @@
|
|
|
package kr.co.zumo.app.lifeplus.view.fragment.faq;
|
|
package kr.co.zumo.app.lifeplus.view.fragment.faq;
|
|
|
|
|
|
|
|
-import android.graphics.Typeface;
|
|
|
|
|
import android.support.annotation.NonNull;
|
|
import android.support.annotation.NonNull;
|
|
|
import android.support.v7.widget.RecyclerView;
|
|
import android.support.v7.widget.RecyclerView;
|
|
|
import android.view.LayoutInflater;
|
|
import android.view.LayoutInflater;
|
|
|
import android.view.View;
|
|
import android.view.View;
|
|
|
import android.view.ViewGroup;
|
|
import android.view.ViewGroup;
|
|
|
-import android.widget.ImageView;
|
|
|
|
|
-import android.widget.RelativeLayout;
|
|
|
|
|
-import android.widget.TextView;
|
|
|
|
|
|
|
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
|
@@ -25,7 +21,7 @@ import kr.co.zumo.app.lifeplus.bean.api.FAQBean;
|
|
|
* @history 하세미 [2018-10-01] [최초 작성]
|
|
* @history 하세미 [2018-10-01] [최초 작성]
|
|
|
* @since 2018-10-01
|
|
* @since 2018-10-01
|
|
|
*/
|
|
*/
|
|
|
-public class FAQExpandableListViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
|
|
|
|
|
|
+public class FAQExpandableListViewAdapter extends RecyclerView.Adapter<FAQExpandableViewHolder> {
|
|
|
|
|
|
|
|
private List<FAQBean> data;
|
|
private List<FAQBean> data;
|
|
|
private RecyclerView recyclerView;
|
|
private RecyclerView recyclerView;
|
|
@@ -43,7 +39,7 @@ public class FAQExpandableListViewAdapter extends RecyclerView.Adapter<RecyclerV
|
|
|
|
|
|
|
|
@NonNull
|
|
@NonNull
|
|
|
@Override
|
|
@Override
|
|
|
- public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
|
|
|
|
|
|
+ public FAQExpandableViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
|
|
View view = LayoutInflater
|
|
View view = LayoutInflater
|
|
|
.from(parent.getContext())
|
|
.from(parent.getContext())
|
|
|
.inflate(R.layout.faq_question_list, parent, false);
|
|
.inflate(R.layout.faq_question_list, parent, false);
|
|
@@ -51,62 +47,31 @@ public class FAQExpandableListViewAdapter extends RecyclerView.Adapter<RecyclerV
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private FAQExpandableViewHolder openedHolder = null;
|
|
private FAQExpandableViewHolder openedHolder = null;
|
|
|
- private FAQBean openedBean = null;
|
|
|
|
|
|
|
+ private int openedIndex = -1;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
|
|
|
|
|
|
+ public void onBindViewHolder(@NonNull FAQExpandableViewHolder holder, int position) {
|
|
|
|
|
|
|
|
- FAQExpandableViewHolder viewHolder = ((FAQExpandableViewHolder) holder);
|
|
|
|
|
|
|
+ FAQExpandableViewHolder viewHolder = holder;
|
|
|
FAQBean bean = data.get(position);
|
|
FAQBean bean = data.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) {
|
|
|
|
|
|
|
+ viewHolder.bind(bean, event -> {
|
|
|
|
|
|
|
|
- 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;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (null != openedHolder) {
|
|
|
|
|
+ FAQBean openedBean = data.get(openedIndex);
|
|
|
|
|
+ openedBean.setExpanded(false);
|
|
|
|
|
+ openedHolder.changed(false);
|
|
|
|
|
+ openedHolder = null;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- // 홀더의 영역이 뷰안으로 들어오도록 스크롤 시킨다.
|
|
|
|
|
- recyclerView.scrollToPosition(position);
|
|
|
|
|
|
|
+ int index = event.getInteger();
|
|
|
|
|
+ FAQBean selectedBean = data.get(index);
|
|
|
|
|
+ if (selectedBean.isExpanded()) {
|
|
|
|
|
+ openedHolder = viewHolder;
|
|
|
|
|
+ openedIndex = index;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ // 홀더의 영역이 뷰안으로 들어오도록 스크롤 시킨다.
|
|
|
|
|
+ recyclerView.scrollToPosition(index);
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -115,40 +80,4 @@ public class FAQExpandableListViewAdapter extends RecyclerView.Adapter<RecyclerV
|
|
|
return data.size();
|
|
return data.size();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private class FAQExpandableViewHolder extends RecyclerView.ViewHolder {
|
|
|
|
|
-
|
|
|
|
|
- private TextView textViewCategory;
|
|
|
|
|
- private TextView textViewQuestion;
|
|
|
|
|
- private ImageView buttonArrow;
|
|
|
|
|
- private RelativeLayout layoutAnswer;
|
|
|
|
|
- private TextView textViewAnswer;
|
|
|
|
|
-
|
|
|
|
|
- public FAQExpandableViewHolder(View itemView) {
|
|
|
|
|
- super(itemView);
|
|
|
|
|
- textViewCategory = itemView.findViewById(R.id.faq_category);
|
|
|
|
|
- textViewQuestion = itemView.findViewById(R.id.faq_question);
|
|
|
|
|
- buttonArrow = itemView.findViewById(R.id.button_open_arrow);
|
|
|
|
|
- layoutAnswer = itemView.findViewById(R.id.layout_answer);
|
|
|
|
|
- textViewAnswer = itemView.findViewById(R.id.faq_answer);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- private void bind(FAQBean faqBean) {
|
|
|
|
|
- textViewAnswer.setText(faqBean.getContents());
|
|
|
|
|
- textViewQuestion.setText(faqBean.getTitle());
|
|
|
|
|
- textViewCategory.setText(faqBean.getCategory());
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- private 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);
|
|
|
|
|
-
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|