package com.ydl.ydlcommon.view; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.os.Build; import androidx.recyclerview.widget.RecyclerView; import android.text.SpannableStringBuilder; import android.text.TextUtils; 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.ydl.ydl_image.config.ISimpleImageOpConfig; import com.ydl.ydl_image.config.SimpleImageOpConfiger; import com.ydl.ydl_image.manager.YDLImageCacheManager; import com.ydl.ydlcommon.view.widgets.RoundImageView; import com.ydl.ydlcommon.R; public class BaseViewHolder extends RecyclerView.ViewHolder { private SparseArray<View> mViews; private Context mContext; private View convertView; private int viewtype; private int position; public BaseViewHolder(View itemView) { this(itemView, itemView.getContext(), 0); } public BaseViewHolder(View itemView, Context context, int viewtype) { super(itemView); mContext = context; convertView = itemView; mViews = new SparseArray<>(); this.viewtype = viewtype; } public int getViewtype() { return viewtype; } public void updatePosition(int position) { this.position = position; } public View getItemView() { return convertView; } public <T extends View> T getView(int viewId) { View view = mViews.get(viewId); if (view == null) { view = convertView.findViewById(viewId); mViews.put(viewId, view); } return (T) view; } public BaseViewHolder setWidth(int viewId, int pixels) { TextView textView = getView(viewId); textView.setWidth(pixels); return this; } public BaseViewHolder setText(int viewId, int resId) { TextView textView = getView(viewId); textView.setText(resId); return this; } public BaseViewHolder setText(int viewId, String text) { TextView textView = getView(viewId); if (textView != null) { textView.setText(text); } return this; } public BaseViewHolder setText(int viewId, SpannableStringBuilder text) { TextView textView = getView(viewId); if (textView != null) { textView.setText(text); } return this; } public BaseViewHolder setText(int viewId, CharSequence content) { TextView tv = (TextView) getView(viewId); if (tv != null) { tv.setText(content); } return this; } public BaseViewHolder setImageResource(int viewId, int resId) { ImageView view = getView(viewId); view.setImageResource(resId); return this; } public BaseViewHolder setImageBitmap(int viewId, Bitmap bitmap) { ImageView view = getView(viewId); view.setImageBitmap(bitmap); return this; } public BaseViewHolder setImageDrawable(int viewId, Drawable drawable) { ImageView view = getView(viewId); view.setImageDrawable(drawable); return this; } public BaseViewHolder setImageWithUrl(int viewId, String url) { ImageView iv = getView(viewId); if (iv != null && !TextUtils.isEmpty(url)) { SimpleImageOpConfiger op = new SimpleImageOpConfiger(); op.errorPic = R.drawable.platform_default_img; op.scaleType = ISimpleImageOpConfig.FIT_CENTER; YDLImageCacheManager.showImage(mContext, url, iv, op); } return this; } public BaseViewHolder setHeadImageWithUrl(int viewId, String url) { ImageView iv = getView(viewId); if (iv != null) { SimpleImageOpConfiger op = new SimpleImageOpConfiger(); op.errorPic = R.drawable.platform_head_place_hold_pic; op.loadingPic = R.drawable.platform_head_place_hold_pic; op.transform = 0; if (!TextUtils.isEmpty(url)) { if (url.startsWith("http:")) { url = url.replaceAll("http:", "https:"); } } YDLImageCacheManager.showImage(mContext, url, iv, op); } return this; } public BaseViewHolder setRecommendTopicImageWithUrl(int viewId, String url) { RoundImageView iv = getView(viewId); if (iv != null) { SimpleImageOpConfiger op = new SimpleImageOpConfiger(); op.errorPic = R.drawable.platform_default_img; YDLImageCacheManager.showImage(mContext, url, iv, op); } return this; } public BaseViewHolder setBackgroundColor(int viewId, int color) { View view = getView(viewId); view.setBackgroundColor(color); return this; } public BaseViewHolder setBackgroundResource(int viewId, int backgroundRes) { View view = getView(viewId); view.setBackgroundResource(backgroundRes); return this; } public BaseViewHolder setTextColor(int viewId, int textColor) { TextView view = getView(viewId); view.setTextColor(textColor); return this; } @SuppressLint("NewApi") public BaseViewHolder setAlpha(int viewId, float value) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { getView(viewId).setAlpha(value); } else { // Pre-honeycomb hack to set Alpha value AlphaAnimation alpha = new AlphaAnimation(value, value); alpha.setDuration(0); alpha.setFillAfter(true); getView(viewId).startAnimation(alpha); } return this; } public BaseViewHolder setVisible(int viewId, boolean visible) { View view = getView(viewId); view.setVisibility(visible ? View.VISIBLE : View.GONE); return this; } public BaseViewHolder setTag(int viewId, Object tag) { View view = getView(viewId); view.setTag(tag); return this; } public BaseViewHolder setTag(int viewId, int key, Object tag) { View view = getView(viewId); view.setTag(key, tag); return this; } public BaseViewHolder setChecked(int viewId, boolean checked) { Checkable view = getView(viewId); view.setChecked(checked); return this; } /** * 关于事件监听 */ public BaseViewHolder setOnClickListener(int viewId, View.OnClickListener listener) { View view = getView(viewId); view.setOnClickListener(listener); return this; } public BaseViewHolder setOnTouchListener(int viewId, View.OnTouchListener listener) { View view = getView(viewId); view.setOnTouchListener(listener); return this; } public BaseViewHolder setOnLongClickListener(int viewId, View.OnLongClickListener listener) { View view = getView(viewId); view.setOnLongClickListener(listener); return this; } public BaseViewHolder setClickable(int viewId, boolean clickable) { View view = getView(viewId); if (view != null) { view.setClickable(clickable); } return this; } public BaseViewHolder setLayoutManager(int viewId, RecyclerView.LayoutManager layoutManager) { RecyclerView recyclerView = getView(viewId); if (recyclerView != null) { recyclerView.setLayoutManager(layoutManager); } return this; } public BaseViewHolder setRcvAdapter(int viewId, RecyclerView.Adapter adapter) { RecyclerView recyclerView = getView(viewId); if (recyclerView != null) { recyclerView.setAdapter(adapter); } return this; } public BaseViewHolder setVisibility(int viewId, int visibility) { View view = getView(viewId); if (view != null) { view.setVisibility(visibility); } return this; } }