1 package com.folioreader.ui.folio.adapter;
3 import android.content.Context;
4 import android.support.v4.content.ContextCompat;
5 import android.support.v7.app.AppCompatActivity;
6 import android.support.v7.widget.RecyclerView;
7 import android.text.Html;
8 import android.view.LayoutInflater;
9 import android.view.View;
10 import android.view.ViewGroup;
11 import android.widget.FrameLayout;
12 import android.widget.ImageView;
13 import android.widget.LinearLayout;
14 import android.widget.RelativeLayout;
15 import android.widget.TextView;
17 import com.folioreader.Config;
18 import com.folioreader.R;
19 import com.folioreader.model.HighlightImpl;
20 import com.folioreader.util.AppUtil;
21 import com.folioreader.util.UiUtil;
22 import com.folioreader.view.UnderlinedTextView;
24 import java.util.List;
27 * @author gautam chibde on 16/6/17.
30 public class HighlightAdapter extends RecyclerView.Adapter<HighlightAdapter.HighlightHolder> {
31 private List<HighlightImpl> highlights;
32 private HighLightAdapterCallback callback;
33 private Context context;
34 private Config config;
36 public HighlightAdapter(Context context, List<HighlightImpl> highlights, HighLightAdapterCallback callback, Config config) {
37 this.context = context;
38 this.highlights = highlights;
39 this.callback = callback;
44 public HighlightHolder onCreateViewHolder(ViewGroup parent, int viewType) {
45 return new HighlightHolder(LayoutInflater.from(parent.getContext())
46 .inflate(R.layout.row_highlight, parent, false));
50 public void onBindViewHolder(final HighlightHolder holder, final int position) {
52 holder.container.postDelayed(new Runnable() {
55 ((AppCompatActivity) context).runOnUiThread(new Runnable() {
58 holder.container.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,FrameLayout.LayoutParams.WRAP_CONTENT));
64 holder.content.setText(Html.fromHtml(getItem(position).getContent()));
65 UiUtil.setBackColorToTextView(holder.content,
66 getItem(position).getType());
67 holder.date.setText(AppUtil.formatDate(getItem(position).getDate()));
68 holder.container.setOnClickListener(new View.OnClickListener() {
70 public void onClick(View v) {
71 callback.onItemClick(getItem(position));
74 holder.delete.setOnClickListener(new View.OnClickListener() {
76 public void onClick(View v) {
77 callback.deleteHighlight(getItem(position).getId());
78 highlights.remove(position);
79 notifyDataSetChanged();
83 holder.editNote.setOnClickListener(new View.OnClickListener() {
85 public void onClick(View v) {
86 callback.editNote(getItem(position), position);
89 if (getItem(position).getNote() != null) {
90 if (getItem(position).getNote().isEmpty()) {
91 holder.note.setVisibility(View.GONE);
93 holder.note.setVisibility(View.VISIBLE);
94 holder.note.setText(getItem(position).getNote());
97 holder.note.setVisibility(View.GONE);
99 holder.container.postDelayed(new Runnable() {
102 final int height = holder.container.getHeight();
103 ((AppCompatActivity) context).runOnUiThread(new Runnable() {
106 ViewGroup.LayoutParams params =
107 holder.swipeLinearLayout.getLayoutParams();
108 params.height = height;
109 holder.swipeLinearLayout.setLayoutParams(params);
114 if (config.isNightMode()) {
115 holder.container.setBackgroundColor(ContextCompat.getColor(context,
117 holder.note.setTextColor(ContextCompat.getColor(context,
119 holder.date.setTextColor(ContextCompat.getColor(context,
121 holder.content.setTextColor(ContextCompat.getColor(context,
124 holder.container.setBackgroundColor(ContextCompat.getColor(context,
126 holder.note.setTextColor(ContextCompat.getColor(context,
128 holder.date.setTextColor(ContextCompat.getColor(context,
130 holder.content.setTextColor(ContextCompat.getColor(context,
135 private HighlightImpl getItem(int position) {
136 return highlights.get(position);
140 public int getItemCount() {
141 return highlights.size();
144 public void editNote(String note, int position) {
145 highlights.get(position).setNote(note);
146 notifyDataSetChanged();
149 static class HighlightHolder extends RecyclerView.ViewHolder {
150 private UnderlinedTextView content;
151 private ImageView delete, editNote;
152 private TextView date;
153 private RelativeLayout container;
154 private TextView note;
155 private LinearLayout swipeLinearLayout;
157 HighlightHolder(View itemView) {
159 container = (RelativeLayout) itemView.findViewById(R.id.container);
160 swipeLinearLayout = (LinearLayout) itemView.findViewById(R.id.swipe_linear_layout);
161 content = (UnderlinedTextView) itemView.findViewById(R.id.utv_highlight_content);
162 delete = (ImageView) itemView.findViewById(R.id.iv_delete);
163 editNote = (ImageView) itemView.findViewById(R.id.iv_edit_note);
164 date = (TextView) itemView.findViewById(R.id.tv_highlight_date);
165 note = (TextView) itemView.findViewById(R.id.tv_note);
169 public interface HighLightAdapterCallback {
170 void onItemClick(HighlightImpl highlightImpl);
172 void deleteHighlight(int id);
174 void editNote(HighlightImpl highlightImpl, int position);