package com.lauren.simplenews.news; 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.lauren.simplenews.R; import com.lauren.simplenews.beans.NewsBean; import com.lauren.simplenews.utils.ImageLoaderUtils; import java.util.List; /** * Description : * Author : lauren * Email : lauren.liuling@gmail.com * Blog : http://www.liuling123.com * Date : 15/12/19 */ public class NewsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private static final int TYPE_ITEM = 0; private static final int TYPE_FOOTER = 1; private List<NewsBean> mData; private boolean mShowFooter = true; private Context mContext; private OnItemClickListener mOnItemClickListener; public NewsAdapter(Context context) { this.mContext = context; } public void setmDate(List<NewsBean> data) { this.mData = data; this.notifyDataSetChanged(); } @Override public int getItemViewType(int position) { // 最后一个item设置为footerView if(!mShowFooter) { return TYPE_ITEM; } if (position + 1 == getItemCount()) { return TYPE_FOOTER; } else { return TYPE_ITEM; } } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if(viewType == TYPE_ITEM) { View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_news, parent, false); ItemViewHolder vh = new ItemViewHolder(v); return vh; } else { View view = LayoutInflater.from(parent.getContext()).inflate( R.layout.footer, null); view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); return new FooterViewHolder(view); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if(holder instanceof ItemViewHolder) { NewsBean news = mData.get(position); if(news == null) { return; } ((ItemViewHolder) holder).mTitle.setText(news.getTitle()); ((ItemViewHolder) holder).mDesc.setText(news.getDigest()); // Uri uri = Uri.parse(news.getImgsrc()); // ((ItemViewHolder) holder).mNewsImg.setImageURI(uri); ImageLoaderUtils.display(mContext, ((ItemViewHolder) holder).mNewsImg, news.getImgsrc()); } } @Override public int getItemCount() { int begin = mShowFooter?1:0; if(mData == null) { return begin; } return mData.size() + begin; } public NewsBean getItem(int position) { return mData == null ? null : mData.get(position); } public void isShowFooter(boolean showFooter) { this.mShowFooter = showFooter; } public boolean isShowFooter() { return this.mShowFooter; } public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.mOnItemClickListener = onItemClickListener; } public class FooterViewHolder extends RecyclerView.ViewHolder { public FooterViewHolder(View view) { super(view); } } public interface OnItemClickListener { public void onItemClick(View view, int position); } public class ItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { public TextView mTitle; public TextView mDesc; public ImageView mNewsImg; public ItemViewHolder(View v) { super(v); mTitle = (TextView) v.findViewById(R.id.tvTitle); mDesc = (TextView) v.findViewById(R.id.tvDesc); mNewsImg = (ImageView) v.findViewById(R.id.ivNews); v.setOnClickListener(this); } @Override public void onClick(View view) { if(mOnItemClickListener != null) { mOnItemClickListener.onItemClick(view, this.getPosition()); } } } }