封装RecyclerViewHolder
//万能的ViewHolder
public class CommomViewHolder extends RecyclerView.ViewHolder {
//子View集合 SparseArray 高性能存储View
private SparseArray mViews;
//布局
private View mContentView;
private LayoutInflater mInflater;
public CommomViewHolder(@NonNull View itemView) {
super(itemView);
mViews = new SparseArray<>();
//通过它即可 findviewById
mContentView = itemView;
}
//实现itemView 获取CommomViewHolder实体
public static CommomViewHolder getViewHolder(ViewGroup parent,int layoutId){
return new CommomViewHolder(View.inflate(parent.getContext(),layoutId,null));
}
//提供给外部访问View 的方法
public T getView(int viewId){
View view = mViews.get(viewId);
if(view == null){
view = mContentView.findViewById(viewId);
mViews.put(viewId,view);
}
return (T) view;
}
//设置文本
public CommomViewHolder setText(int viewId, String text) {
TextView tv = getView(viewId);
tv.setText(text);
return this;
}
//设置图片链接
public CommomViewHolder setImageUrl(Context mContext, int viewId, String url) {
ImageView iv = getView(viewId);
GlideHelper.loadUrl(mContext, url, iv);
return this;
}
//设置图片链接
public CommomViewHolder setImage(Context mContext, int viewId, String imString) {
ImageView iv = getView(viewId);
UtilTools.getImageToString(imString,iv);
return this;
}
//压缩
public CommomViewHolder setImageUrl(Context mContext, int viewId, String url, int w, int h) {
ImageView iv = getView(viewId);
// GlideHelper.loadSmollUrl(mContext, url, w, h, iv);
return this;
}
//设置图片文件
public CommomViewHolder setImageFile(Context mContext, int viewId, File file) {
ImageView iv = getView(viewId);
// GlideHelper.loadFile(mContext, file, iv);
return this;
}
//设置图片
public CommomViewHolder setImageResource(int viewId, int resId) {
ImageView iv = getView(viewId);
iv.setImageResource(resId);
return this;
}
//设置背景颜色
public CommomViewHolder setBackgroundColor(int viewId, int color) {
ImageView iv = getView(viewId);
iv.setBackgroundColor(color);
return this;
}
//设置文本颜色
public CommomViewHolder setTextColor(int viewId, int color) {
TextView tv = getView(viewId);
tv.setTextColor(color);
return this;
}
//设置控件的显示隐藏
public CommomViewHolder setVisibility(int viewId, int visibility) {
TextView tv = getView(viewId);
tv.setVisibility(visibility);
return this;
}
}
该ViewHolder进行试验 app 显示的Item 是这样的 显示不全
出现问题的代码定位
//实现itemView 获取CommomViewHolder实体
public static CommomViewHolder getViewHolder(ViewGroup parent,int layoutId){
return new CommomViewHolder(View.inflate(parent.getContext(),layoutId,null));
}
是因为Item的View 没有依附到parent之上
将上面代码修改为
//实现itemView 获取CommomViewHolder实体
public static CommomViewHolder getViewHolder(ViewGroup parent,int layoutId){
return new CommomViewHolder( LayoutInflater.from(parent.getContext()).inflate(layoutId, parent, false));
}
就开始正常显示Item