package com.yaoyumeng.v2ex.ui.adapter;
import android.content.Context;
import android.content.Intent;
import android.os.Parcelable;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.yaoyumeng.v2ex.R;
import com.yaoyumeng.v2ex.model.ReplyModel;
import com.yaoyumeng.v2ex.model.V2EXDateModel;
import com.yaoyumeng.v2ex.ui.UserActivity;
import com.yaoyumeng.v2ex.ui.widget.RichTextView;
import com.yaoyumeng.v2ex.utils.AccountUtils;
import com.yaoyumeng.v2ex.utils.OnScrollToBottomListener;
import java.util.ArrayList;
import java.util.List;
/**
* Created by yw on 2015/4/28.
*/
public class ReplyAdapter extends RecyclerView.Adapter<ReplyAdapter.ViewHolder> {
Context mContext;
List<ReplyModel> mReplies = new ArrayList<ReplyModel>();
boolean mLogin;
OnItemCommentClickListener mListener;
OnScrollToBottomListener mScrollListener;
public ReplyAdapter(Context context, OnItemCommentClickListener listener, OnScrollToBottomListener scrollListener) {
mContext = context;
mListener = listener;
mScrollListener = scrollListener;
mLogin = AccountUtils.isLogined(mContext);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_reply, viewGroup, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
final ReplyModel reply = mReplies.get(i);
if (mLogin) {
View.OnClickListener onClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mListener != null)
mListener.onItemCommentClick(reply);
}
};
viewHolder.comment.setVisibility(View.VISIBLE);
viewHolder.comment.setOnClickListener(onClick);
viewHolder.card.setOnClickListener(onClick);
} else {
viewHolder.comment.setVisibility(View.GONE);
}
if (reply.contentRendered != null)
viewHolder.content.setRichText(reply.contentRendered);
String imageURL = reply.member.avatar;
ImageLoader.getInstance().displayImage(imageURL, viewHolder.avatar);
viewHolder.avatar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (reply.member == null) return;
Intent intent = new Intent(mContext, UserActivity.class);
intent.putExtra("model", (Parcelable) reply.member);
mContext.startActivity(intent);
}
});
viewHolder.replier.setText(reply.member.username);
viewHolder.time.setText(V2EXDateModel.toString(reply.created));
viewHolder.floor.setText(String.format("第%d楼", i + 1));
if (viewHolder.divide != null)
viewHolder.divide.setVisibility(i == mReplies.size() - 1 ? View.GONE : View.VISIBLE);
if (mReplies.size() - i <= 1 && mScrollListener != null) {
mScrollListener.onLoadMore();
}
}
@Override
public int getItemCount() {
return mReplies.size();
}
public void update(ArrayList<ReplyModel> data) {
mReplies = data;
notifyDataSetChanged();
}
public void insert(ArrayList<ReplyModel> replies) {
mReplies.addAll(replies);
notifyDataSetChanged();
}
public void insert(ReplyModel reply) {
mReplies.add(reply);
notifyDataSetChanged();
}
static public interface OnItemCommentClickListener {
abstract void onItemCommentClick(ReplyModel replyObj);
}
static class ViewHolder extends RecyclerView.ViewHolder {
View card;
ImageView avatar;
RichTextView content;
TextView replier;
TextView time;
CheckBox comment;
TextView floor;
View divide;
public ViewHolder(View view) {
super(view);
card = (View) view.findViewById(R.id.card_container);
avatar = (ImageView) view.findViewById(R.id.avatar);
content = (RichTextView) view.findViewById(R.id.content);
time = (TextView) view.findViewById(R.id.time);
replier = (TextView) view.findViewById(R.id.replier);
comment = (CheckBox) view.findViewById(R.id.commentBtn);
floor = (TextView) view.findViewById(R.id.which_floor);
divide = view.findViewById(R.id.divide_reply);
}
}
}