package com.dalingge.gankio.module.home.gank; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.DrawableRequestBuilder; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.dalingge.gankio.R; import com.dalingge.gankio.data.model.GankBean; import com.dalingge.gankio.utils.DateUtils; import java.util.ArrayList; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; /** * Created by dingboyang on 2016/11/13. */ public class GankAdapter extends RecyclerView.Adapter<GankAdapter.ViewHolder> { private static final int LAST_POSITION = -1; private Context mContext; private ArrayList<GankBean> mData; private OnItemClickListener mOnItemClickListener; public GankAdapter(Context context, ArrayList<GankBean> data) { this.mContext = context; this.mData = data; for (int i = 0; i < mData.size(); i++) { addItem(i, mData.get(i)); } } public GankBean getItem(int position) { return mData == null ? null : mData.get(position); } public ArrayList<GankBean> getData() { return mData; } public void setDate(ArrayList<GankBean> data) { mData = data; } public void add(GankBean resultsBean, int position) { position = position == LAST_POSITION ? getItemCount() : position; mData.add(position, resultsBean); notifyItemInserted(position); } void addItem(int position, GankBean resultsBean) { mData.add(position, resultsBean); notifyItemInserted(position); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new ViewHolder(LayoutInflater.from(mContext) .inflate(R.layout.item_home_gank, parent, false)); } @Override public void onBindViewHolder(ViewHolder holder, int position) { GankBean gankBean = mData.get(position); holder.tvHomeGankTitle.setText(gankBean.desc); holder.tvHomeGankAuthor.setText(gankBean.who); holder.tvHomeGankDate.setText(DateUtils.formatDateDetailDay(DateUtils.parseStringToDate(gankBean.publishedAt))); if (gankBean.images != null && !gankBean.images.isEmpty()) { holder.ivHomeGankImg.setVisibility(View.VISIBLE); DrawableRequestBuilder<String> requestBuilder = Glide.with(mContext) .load(gankBean.images.get(0)+"?imageView2/0/w/400") .diskCacheStrategy(DiskCacheStrategy.SOURCE) .error(R.color.accent) .crossFade(); requestBuilder.into(holder.ivHomeGankImg); }else { holder.ivHomeGankImg.setVisibility(View.GONE); } } @Override public int getItemCount() { return mData == null ? 0 : mData.size(); } class ViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.iv_home_gank_img) ImageView ivHomeGankImg; @BindView(R.id.tv_home_gank_title) TextView tvHomeGankTitle; @BindView(R.id.tv_home_gank_author) TextView tvHomeGankAuthor; @BindView(R.id.tv_home_gank_date) TextView tvHomeGankDate; ViewHolder(View itemView) { super(itemView); ButterKnife.bind(this, itemView); } @OnClick(R.id.card_view) public void onClick(View view) { if (mOnItemClickListener != null) { mOnItemClickListener.onItemClick(view, getAdapterPosition()); } } } public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.mOnItemClickListener = onItemClickListener; } public interface OnItemClickListener { void onItemClick(View view, int position); } }