package licola.demo.com.huabandemo.Adapter; import android.content.res.Resources; 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.LinearLayout; import android.widget.TextView; import com.facebook.drawee.view.SimpleDraweeView; import licola.demo.com.huabandemo.Base.BaseRecyclerAdapter; import licola.demo.com.huabandemo.HttpUtils.ImageLoad.ImageLoadBuilder; import licola.demo.com.huabandemo.Module.User.UserBoardItemBean; import licola.demo.com.huabandemo.R; import licola.demo.com.huabandemo.Util.CompatUtils; import licola.demo.com.huabandemo.Util.Logger; import static android.view.View.OnClickListener; /** * Created by LiCola on 2016/04/07 17:00 * 负责展示 展示用户的画板 adapter 差别在于底部是否有操作功能 * 在我的界面是 是编辑 在其他用户是关注 * 需要判断是否 isMe 影响底部的显示 */ public class RecyclerBoardUserAdapter extends BaseRecyclerAdapter<UserBoardItemBean> { private boolean isMe;//是否是我的标志位 true是我 否则不是 private onAdapterListener mListener; private final String mAttentionFormat;//关注数量 private final String mGatherFormat;//采集数量 private final String mOperateEdit;//编辑 private final String mOperateFollowing;//关注 private final String mOperateFollowed;//已关注 private final Drawable mDrawableBlock; private final Drawable mDrawableEdit; private final Drawable mDrawableFollowing; private final Drawable mDrawableFollowed; public interface onAdapterListener { void onClickImage(UserBoardItemBean bean, View view); void onClickOperate(UserBoardItemBean bean, View view); } public RecyclerBoardUserAdapter(RecyclerView mRecyclerView, boolean isMe) { super(mRecyclerView); this.isMe = isMe; Resources resources = mContext.getResources(); this.mGatherFormat = resources.getString(R.string.text_gather_number); this.mAttentionFormat = resources.getString(R.string.text_attention_number); this.mOperateEdit = resources.getString(R.string.text_edit); this.mOperateFollowing = resources.getString(R.string.text_following); this.mOperateFollowed = resources.getString(R.string.text_followed); this.mDrawableBlock = CompatUtils.getTintListDrawable(mContext, R.drawable.ic_block_black_24dp, R.color.tint_list_grey); this.mDrawableEdit = CompatUtils.getTintListDrawable(mContext, R.drawable.ic_mode_edit_black_24dp, R.color.tint_list_grey); this.mDrawableFollowing = CompatUtils.getTintListDrawable(mContext, R.drawable.ic_add_black_24dp, R.color.tint_list_grey); this.mDrawableFollowed = CompatUtils.getTintListDrawable(mContext, R.drawable.ic_check_black_24dp, R.color.tint_list_grey); } 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_user, 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 UserBoardItemBean bean = mList.get(position); //父类强制转换成子类 因为这个holder本来就是子类初始化的 所以可以强转 ViewHolderBoard viewHolder = (ViewHolderBoard) holder;//强制类型转换 转成内部的ViewHolder onBindData(viewHolder, bean); onBindListener(viewHolder, bean);//初始化点击事件 } private void onBindData(final ViewHolderBoard holder, UserBoardItemBean bean) { //检查图片信息 Logger.d("deleting " + bean.getDeleting()); boolean isOperate = false; //不为0的 标志位 才能操作 if (bean.getDeleting() != 0) { isOperate = true; } boolean isFollowing = bean.isFollowing(); Drawable drawable; String text; if (isOperate) { if (isMe) { text = mOperateEdit; drawable = mDrawableEdit; } else { if (isFollowing) { text = mOperateFollowed; drawable = mDrawableFollowed; } else { text = mOperateFollowing; drawable = mDrawableFollowing; } } } else { drawable = mDrawableBlock; text = ""; } holder.tv_board_operate.setText(text); holder.linearLayout_gourp.setTag(isOperate); holder.tv_board_operate.setCompoundDrawablesWithIntrinsicBounds( drawable, null, null, null); 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())); } 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(UserBoardItemBean bean) { int size = bean.getPins().size(); if (size > 0) { return bean.getPins().get(0).getFile().getKey(); } else { return ""; } } /** * 检查文字项目 * * @param bean * @return */ private boolean checkInfoContext(UserBoardItemBean bean) { return true; } private void onBindListener(ViewHolderBoard holder, final UserBoardItemBean bean) { holder.frameLayout_image.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mListener.onClickImage(bean, v); } }); holder.linearLayout_gourp.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { boolean isOperate = (boolean) v.getTag(); if (isOperate) { mListener.onClickOperate(bean, v); } else { mListener.onClickImage(bean, v); } } }); } public static class ViewHolderBoard extends RecyclerView.ViewHolder { //这个CardView采用两层操作 public final View mView; public final LinearLayout linearLayout_gourp; 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_operate; public ViewHolderBoard(View view) { super(view); mView = view; linearLayout_gourp = (LinearLayout) view.findViewById(R.id.linearlayout_group); 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_operate = (TextView) view.findViewById(R.id.tv_board_operate);//相关操作 } } }