package com.example.rover; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; import java.util.List; import io.rover.model.Message; public class MyMessageRecyclerViewAdapter extends RecyclerView.Adapter<MyMessageRecyclerViewAdapter.ViewHolder> { private final List<Message> mValues; private OnDeleteListener mDeleteListener; private OnClickListener mClickListener; public interface OnDeleteListener { void onDelete(Message message); } public interface OnClickListener { void onClick(Message message); } public MyMessageRecyclerViewAdapter(List<Message> items) { mValues = items; } public void setOnDeleteMessageListener(OnDeleteListener deleteListener) { mDeleteListener = deleteListener; } public void setOnClickListener(OnClickListener clickListener) { mClickListener = clickListener; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.fragment_message, parent, false); final ViewHolder holder = new ViewHolder(view); holder.mDeleteButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = holder.getAdapterPosition(); Message message = mValues.get(position); if (mDeleteListener != null) { mDeleteListener.onDelete(message); } } }); holder.mView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = holder.getAdapterPosition(); Message message = mValues.get(position); if (mClickListener != null) { mClickListener.onClick(message); } } }); return holder; } @Override public void onBindViewHolder(final ViewHolder holder, final int position) { Message message = mValues.get(position); holder.mItem = mValues.get(position); holder.mTitleView.setText(message.getTitle()); holder.mContentView.setText(message.getText()); if (message.isRead()) { holder.mReadStatusView.setVisibility(View.INVISIBLE); } else { holder.mReadStatusView.setVisibility(View.VISIBLE); } } @Override public int getItemCount() { return mValues.size(); } public void clear() { mValues.clear(); notifyDataSetChanged(); } public void addAll(List<Message> list) { mValues.addAll(list); notifyDataSetChanged(); } public void remove(Message message) { int position = mValues.indexOf(message); if (position >= 0) { mValues.remove(position); notifyItemRemoved(position); } } public void messageUpdated(Message message) { int position = mValues.indexOf(message); if (position >= 0) { notifyItemChanged(position); } } public static class ViewHolder extends RecyclerView.ViewHolder { public final View mView; public final TextView mTitleView; public final TextView mContentView; public final Button mDeleteButton; public final View mReadStatusView; public Message mItem; public ViewHolder(View view) { super(view); mView = view; mTitleView = (TextView) view.findViewById(R.id.titleTextView); mContentView = (TextView) view.findViewById(R.id.messageTextView); mDeleteButton = (Button) view.findViewById(R.id.messageDeleteButton); mReadStatusView = view.findViewById(R.id.messageReadStatus); } @Override public String toString() { return super.toString() + " '" + mContentView.getText() + "'"; } } }