Android开发遇到的问题----自定义RecyclerView Adapter Item 显示不全
16lz
2021-01-23
封装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图片缓存加强版(LruCache+DiskLruCache+软引用)
- Android文件图片上传的详细讲解(三)---模式回调类
- android保存图片到图库
- Android的GridView控件点击图片变暗效果
- Android 分别使用Post与Get实现网络图片加载
- android 从sdcard 读取图片 剪切 粘贴
- Android使用AsyncTask下载图片并显示进度条功能
- Android 部分内容设置颜色、字体、超链接、图片