package com.hitherejoe.bourbon.ui.shot; import android.net.Uri; import android.support.v7.widget.RecyclerView; import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.hitherejoe.bourbon.R; import com.hitherejoe.bourboncorecommon.data.model.Comment; import com.hitherejoe.bourbon.util.CustomTabUtil; import com.hitherejoe.bourbon.util.TextViewLinkHandler; import java.util.Collections; import java.util.List; import javax.inject.Inject; import butterknife.Bind; import butterknife.ButterKnife; public class CommentAdapter extends RecyclerView.Adapter<CommentAdapter.CommentViewHolder> { private List<Comment> mComments; private ClickListener mClickListener; @Inject public CommentAdapter() { mComments = Collections.emptyList(); } public void setComments(List<Comment> comments) { mComments = comments; } @Override public CommentViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater .from(parent.getContext()) .inflate(R.layout.item_comment, parent, false); return new CommentViewHolder(view); } @Override public void onBindViewHolder(CommentViewHolder holder, int position) { Comment comment = mComments.get(position); holder.mComment = comment; holder.userNameText.setText(comment.user.username); holder.commentText.setText(Html.fromHtml(comment.body)); Glide.with(holder.itemView.getContext()) .load(comment.user.avatarUrl).into(holder.userImage); } @Override public int getItemCount() { return mComments.size(); } class CommentViewHolder extends RecyclerView.ViewHolder { @Bind(R.id.image_avatar) ImageView userImage; @Bind(R.id.text_user_name) TextView userNameText; @Bind(R.id.text_time) TextView timeText; @Bind(R.id.text_comment) TextView commentText; public Comment mComment; public CommentViewHolder(final View itemView) { super(itemView); ButterKnife.bind(this, itemView); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mClickListener != null) mClickListener.onCommentClick(mComment); } }); commentText.setMovementMethod(new TextViewLinkHandler() { @Override public void onLinkClick(String url) { CustomTabUtil.open(itemView.getContext(), Uri.parse(url)); } }); userImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { CustomTabUtil.open(itemView.getContext(), Uri.parse(mComment.user.htmlUrl)); } }); } } public interface ClickListener { void onCommentClick(Comment comment); } }