Android开发遇到的问题----自定义RecyclerView Adapter Item 显示不全
16lz
2022-04-17
封装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
更多相关文章
- android 按钮置灰效果
- Android获取物理地址(支持5.0~10.0)
- Android透明字体画法
- Android中的获取内存信息的相关命令
- Android获取StatusBa有效高度
- Android中 Bitmap和Drawable相互转换的方法
- android 获取IP
- Android(安卓)常用的SDCARD和内存操作
- 【转】 关于Android堆内存的设置