package licola.demo.com.huabandemo.Adapter; import android.graphics.drawable.Drawable; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.TextView; import com.facebook.drawee.view.SimpleDraweeView; import licola.demo.com.huabandemo.Base.BaseRecyclerAdapter; import licola.demo.com.huabandemo.Entity.BoardPinsBean; import licola.demo.com.huabandemo.HttpUtils.ImageLoad.ImageLoadBuilder; import licola.demo.com.huabandemo.R; import licola.demo.com.huabandemo.Util.CompatUtils; import static android.view.View.OnClickListener; /** * Created by LiCola on 2016/04/05 15:00 * 负责展示 画板信息的 adapter */ public class RecyclerBoardAdapter extends BaseRecyclerAdapter<BoardPinsBean> { private onAdapterListener mListener; private final String mAttentionFormat;//关注数量 private final String mGatherFormat;//采集数量 private final String mUsernameFormat;//采集数量 public interface onAdapterListener { void onClickImage(BoardPinsBean bean, View view); void onClickTextInfo(BoardPinsBean bean, View view); } public RecyclerBoardAdapter(RecyclerView mRecyclerView) { super(mRecyclerView); this.mGatherFormat = mContext.getResources().getString(R.string.text_gather_number); this.mAttentionFormat = mContext.getResources().getString(R.string.text_attention_number); this.mUsernameFormat = mContext.getResources().getString(R.string.text_by_username); } public void setOnClickItemListener(onAdapterListener mListener) { this.mListener = mListener; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //Logger.d(life); ViewHolderBoard holder = null;//ViewHolder的子类 View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.cardview_item_board, parent, false); holder = new ViewHolderBoard(view); //子类可以自动转型为父类 return holder; } @Override public void onViewRecycled(RecyclerView.ViewHolder holder) { super.onViewRecycled(holder); //当有被被回收viewHolder调用 //Logger.d(life); } @Override public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { //Logger.d(life); final BoardPinsBean bean = mList.get(position); //父类强制转换成子类 因为这个holder本来就是子类初始化的 所以可以强转 ViewHolderBoard viewHolder = (ViewHolderBoard) holder;//强制类型转换 转成内部的ViewHolder onBindData(viewHolder, bean); onBindListener(viewHolder, bean);//初始化点击事件 } private void onBindData(final ViewHolderBoard holder, BoardPinsBean bean) { //检查图片信息 if (checkInfoContext(bean)) { holder.tv_board_title.setText(bean.getTitle()); holder.tv_board_gather.setText(String.format(mGatherFormat, bean.getPin_count())); holder.tv_board_attention.setText(String.format(mAttentionFormat, bean.getFollow_count())); holder.tv_board_username.setText(String.format(mUsernameFormat, bean.getUser().getUsername())); } else { //// TODO: 2016/4/5 0005 空值状态的显示 } String url_img = String.format(mUrlGeneralFormat, getFirstPinsFileKey(bean)); float ratio = 1f;//固定宽高比 为1:1 矩形图 holder.img_card_image.setAspectRatio(ratio);//设置宽高比 Drawable dProgressImage = CompatUtils.getTintListDrawable(mContext, R.drawable.ic_toys_black_48dp, R.color.tint_list_pink); ImageLoadBuilder.Start(mContext, holder.img_card_image, url_img) .setProgressBarImage(dProgressImage) .build(); } private String getFirstPinsFileKey(BoardPinsBean bean) { int size = bean.getPins().size(); if (size > 0) { return bean.getPins().get(0).getFile().getKey(); } else { return ""; } } /** * 检查文字项目 * * @param bean * @return */ private boolean checkInfoContext(BoardPinsBean bean) { return true; } private void onBindListener(ViewHolderBoard holder, final BoardPinsBean bean) { holder.frameLayout_image.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mListener.onClickImage(bean, v); } }); holder.tv_board_username.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mListener.onClickTextInfo(bean, v); } }); } public static class ViewHolderBoard extends RecyclerView.ViewHolder { //这个CardView采用两层操作 public final View mView; public final FrameLayout frameLayout_image;//第一层 public final SimpleDraweeView img_card_image; public final TextView tv_board_title; public final TextView tv_board_gather; public final TextView tv_board_attention; public final TextView tv_board_username; public ViewHolderBoard(View view) { super(view); mView = view; frameLayout_image = (FrameLayout) view.findViewById(R.id.framelayout_image); img_card_image = (SimpleDraweeView) view.findViewById(R.id.img_card_image);//主图 tv_board_title = (TextView) view.findViewById(R.id.tv_board_title);//描述的title tv_board_gather = (TextView) view.findViewById(R.id.tv_board_gather);//描述的title tv_board_attention = (TextView) view.findViewById(R.id.tv_board_attention);//描述的title tv_board_username = (TextView) view.findViewById(R.id.tv_board_username);//描述的title } } }