封装RecyclerViewHolder

//万能的ViewHolderpublic 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

 

 

 

更多相关文章

  1. android 按钮置灰效果
  2. Android获取物理地址(支持5.0~10.0)
  3. Android透明字体画法
  4. Android中的获取内存信息的相关命令
  5. Android获取StatusBa有效高度
  6. Android中 Bitmap和Drawable相互转换的方法
  7. android 获取IP
  8. Android(安卓)常用的SDCARD和内存操作
  9. 【转】 关于Android堆内存的设置

随机推荐

  1. 漫画设计模式:什么是 “职责链模式” ?
  2. 配置vscode的cmder的方法
  3. 前端杂记-环境搭建
  4. mysql 存在更新 不存在插入
  5. mysql创建存储过程失败1307错误解决
  6. 0506作业
  7. h5红包活动特辑,红包H5营销活动如何制作
  8. 随时随地创建在线考试,“无纸化”考试时代
  9. 游戏Python开发从青铜到王者,你必须了解哪
  10. Unity3D实现模型体积拖拽变化