package com.yaoyumeng.v2ex.ui.adapter;
import android.content.Context;
import android.content.Intent;
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.nostra13.universalimageloader.core.ImageLoader;
import com.yaoyumeng.v2ex.R;
import com.yaoyumeng.v2ex.model.MemberModel;
import com.yaoyumeng.v2ex.model.NotificationModel;
import com.yaoyumeng.v2ex.model.TopicModel;
import com.yaoyumeng.v2ex.ui.TopicActivity;
import com.yaoyumeng.v2ex.ui.UserActivity;
import com.yaoyumeng.v2ex.utils.OnScrollToBottomListener;
import java.util.ArrayList;
import java.util.List;
/**
* Created by yw on 2015/5/15.
*/
public class NotificationsAdapter extends RecyclerView.Adapter<NotificationsAdapter.ViewHolder> {
List<NotificationModel> mNotifications = new ArrayList<NotificationModel>();
private Context mContext;
OnScrollToBottomListener mListener;
public NotificationsAdapter(Context context, OnScrollToBottomListener listen) {
this.mContext = context;
this.mListener = listen;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
// 给ViewHolder设置布局文件
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_notification, viewGroup, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
// 给ViewHolder设置元素
final NotificationModel model = mNotifications.get(i);
final MemberModel member = model.notificationMember;
final TopicModel topic = model.notificationTopic;
viewHolder.card.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext, TopicActivity.class);
intent.putExtra("topic_id", topic.id);
mContext.startActivity(intent);
}
});
final String imageURL = member.avatar;
final String username = member.username;
ImageLoader.getInstance().displayImage(imageURL, viewHolder.avatar);
viewHolder.avatar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext, UserActivity.class);
intent.putExtra("username", username);
mContext.startActivity(intent);
}
});
viewHolder.title.setText(username + " " + model.notificationDescriptionBefore +
model.notificationTopic.title + model.notificationDescriptionAfter);
String contentTxt = topic.content;
if (contentTxt == null || contentTxt.isEmpty()) {
viewHolder.content.setVisibility(View.GONE);
} else {
viewHolder.content.setVisibility(View.VISIBLE);
viewHolder.content.setText(Html.fromHtml(contentTxt));
}
String date = topic.url;
viewHolder.time.setText(date);
if (mNotifications.size() - i <= 1 && mListener != null) {
mListener.onLoadMore();
}
}
public void update(ArrayList<NotificationModel> data, boolean merge) {
if (merge) {
mNotifications.addAll(data);
} else {
mNotifications = data;
}
notifyDataSetChanged();
}
@Override
public int getItemCount() {
// 返回数据总数
return mNotifications.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
public View card;
ImageView avatar;
TextView content;
TextView title;
TextView time;
public ViewHolder(View view) {
// super这个参数一定要注意,必须为Item的根节点.否则会出现莫名的FC.
super(view);
card = (View) view.findViewById(R.id.card_container);
avatar = (ImageView) view.findViewById(R.id.avatar);
content = (TextView) view.findViewById(R.id.content);
title = (TextView) view.findViewById(R.id.title);
time = (TextView) view.findViewById(R.id.notify_time);
}
}
}