package com.yuyh.easyadapter.recyclerview; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Paint; import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.os.Build; import android.support.v4.content.ContextCompat; import android.support.v7.widget.RecyclerView; import android.util.SparseArray; import android.view.View; import android.view.animation.AlphaAnimation; import android.widget.Checkable; import android.widget.ImageView; import android.widget.TextView; import com.yuyh.easyadapter.AdapterImageLoader; import com.yuyh.easyadapter.helper.ViewHelper; public class EasyRVHolder extends RecyclerView.ViewHolder implements ViewHelper.RecyclerView<EasyRVHolder> { private SparseArray<View> mViews = new SparseArray<>(); private View mConvertView; private int mLayoutId; protected Context mContext; private AdapterImageLoader.ImageLoader mImageLoader; public EasyRVHolder(Context context, int layoutId, View itemView, AdapterImageLoader.ImageLoader imageLoader) { super(itemView); this.mContext = context; this.mLayoutId = layoutId; this.mImageLoader = imageLoader; mConvertView = itemView; mConvertView.setTag(this); } public <V extends View> V getView(int viewId) { View view = mViews.get(viewId); if (view == null) { view = mConvertView.findViewById(viewId); mViews.put(viewId, view); } return (V) view; } public int getLayoutId() { return mLayoutId; } /** * 获取item布局 * * @return */ public View getItemView() { return mConvertView; } public EasyRVHolder setOnItemViewClickListener(View.OnClickListener listener) { mConvertView.setOnClickListener(listener); return this; } public EasyRVHolder setOnItemViewLongClickListener(View.OnLongClickListener listener) { mConvertView.setOnLongClickListener(listener); return this; } @Override public EasyRVHolder setText(int viewId, String value) { TextView view = getView(viewId); view.setText(value); return this; } @Override public EasyRVHolder setTextColor(int viewId, int color) { TextView view = getView(viewId); view.setTextColor(color); return this; } @Override public EasyRVHolder setTextColorRes(int viewId, int colorRes) { TextView view = getView(viewId); view.setTextColor(ContextCompat.getColor(mContext, colorRes)); return this; } @Override public EasyRVHolder setImageResource(int viewId, int imgResId) { ImageView view = getView(viewId); view.setImageResource(imgResId); return this; } @Override public EasyRVHolder setBackgroundColor(int viewId, int color) { View view = getView(viewId); view.setBackgroundColor(color); return this; } @Override public EasyRVHolder setBackgroundColorRes(int viewId, int colorRes) { View view = getView(viewId); view.setBackgroundResource(colorRes); return this; } @Override public EasyRVHolder setImageDrawable(int viewId, Drawable drawable) { ImageView view = getView(viewId); view.setImageDrawable(drawable); return this; } @Override public EasyRVHolder setImageDrawableRes(int viewId, int drawableRes) { Drawable drawable = ContextCompat.getDrawable(mContext, drawableRes); return setImageDrawable(viewId, drawable); } @Override public EasyRVHolder setImageUrl(int viewId, String imgUrl) { ImageView imageView = getView(viewId); if (mImageLoader != null) { mImageLoader.loadImage(mContext, imgUrl, imageView); } else if (AdapterImageLoader.sImageLoader != null) { AdapterImageLoader.sImageLoader.loadImage(mContext, imgUrl, imageView); } return this; } @Override public EasyRVHolder setImageBitmap(int viewId, Bitmap imgBitmap) { ImageView view = getView(viewId); view.setImageBitmap(imgBitmap); return this; } @Override public EasyRVHolder setVisible(int viewId, boolean visible) { View view = getView(viewId); view.setVisibility(visible ? View.VISIBLE : View.GONE); return this; } @Override public EasyRVHolder setVisible(int viewId, int visible) { View view = getView(viewId); view.setVisibility(visible); return this; } @Override public EasyRVHolder setTag(int viewId, Object tag) { View view = getView(viewId); view.setTag(tag); return this; } @Override public EasyRVHolder setTag(int viewId, int key, Object tag) { View view = getView(viewId); view.setTag(key, tag); return this; } @Override public EasyRVHolder setChecked(int viewId, boolean checked) { Checkable view = getView(viewId); view.setChecked(checked); return this; } @Override public EasyRVHolder setAlpha(int viewId, float value) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { getView(viewId).setAlpha(value); } else { AlphaAnimation alpha = new AlphaAnimation(value, value); alpha.setDuration(0); alpha.setFillAfter(true); getView(viewId).startAnimation(alpha); } return this; } @Override public EasyRVHolder setTypeface(int viewId, Typeface typeface) { TextView view = getView(viewId); view.setTypeface(typeface); view.setPaintFlags(view.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG); return this; } @Override public EasyRVHolder setTypeface(Typeface typeface, int... viewIds) { for (int viewId : viewIds) { TextView view = getView(viewId); view.setTypeface(typeface); view.setPaintFlags(view.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG); } return this; } @Override public EasyRVHolder setOnClickListener(int viewId, View.OnClickListener listener) { View view = getView(viewId); view.setOnClickListener(listener); return this; } }