1public class BaseViewHoler extends RecyclerView.ViewHolder { 2 private Context context; 3 //行布局的view 4 private View mView; 5 //用来装载id的集合 用法和map类似 6 private SparseArray<View> sparseArray; 7 8 9 public BaseViewHoler(View itemView, Context context) { 10 super(itemView); 11 mView = itemView; 12 sparseArray = new SparseArray<>(); 13 this.context = context; 14 } 15 16 //初始化RecyclerView的 17 public static BaseViewHoler createRecyclerViewHolder(Context context, ViewGroup group, int layoutId) { 18 View itemView = LayoutInflater.from(context).inflate(layoutId, group, false); 19 BaseViewHoler baseViewHoler = new BaseViewHoler(itemView, context); 20 return baseViewHoler; 21 } 22 23 //初始化listView的 24 public static BaseViewHoler createListViewHolder(View view, ViewGroup group, int layoutId) { 25 BaseViewHoler baseViewHoler = null; 26 if (view == null) { 27 view = LayoutInflater.from(group.getContext()).inflate(layoutId, group, false); 28 baseViewHoler = new BaseViewHoler(view, group.getContext()); 29 view.setTag(baseViewHoler); 30 } else { 31 baseViewHoler = (BaseViewHoler) view.getTag(); 32 } 33 return baseViewHoler; 34 } 35 36 //根据id来获得组件 37 public <T extends View> T getView(int id) { 38 //创建一个view 根据id从集合里取出 39 View view = sparseArray.get(id); 40 //如果没有取到 那么就通过findViewById的方式找到这个组件,然后将组件存放在集合里 41 if (view == null) { 42 view = mView.findViewById(id); 43 sparseArray.put(id, view); 44 } 45 //最后返回的这个就是我们想要的组件了 46 return (T) view; 47 } 48 49 //自己随意的定义方法 50 //最基本的设置文字的方法 51 public BaseViewHoler setText(int id, String str) { 52 TextView textView = getView(id); 53 if (str != null) { 54 textView.setText(str); 55 } 56 return this; 57 } 58 59 60 //第三方轮播图banner 61 public BaseViewHoler setBanner(int id, String url) { 62 final Banner banner = getView(id); 63 if (url != null) { 64 NetTool.getInstance().startRequest(url, BannerBean.class, new CallBack<BannerBean>() { 65 @Override 66 public void onSuccess(BannerBean response) { 67 List<String> bannerBean = new ArrayList<String>(); 68 for (int i = 0; i < response.getData().getBanners().size(); i++) { 69 bannerBean.add(response.getData().getBanners().get(i).getImage_url()); 70 } 71 banner.setImageLoader(new GlideImageLoader()); 72 banner.setImages(bannerBean); 73 banner.isAutoPlay(true);//自动播放 74 banner.setDelayTime(3000);//设置延时时间 75 banner.setIndicatorGravity(BannerConfig.CENTER);//设置小圆点的位置 76 banner.start(); 77 } 78 79 @Override 80 public void onError(Throwable e) { 81 82 } 83 }); 84 85 86 } 87 return null; 88 } 89 90 class GlideImageLoader extends ImageLoader { 91 92 @Override 93 public void displayImage(Context context, Object path, ImageView imageView) { 94 Glide.with(context).load(path).into(imageView); 95 } 96 } 97 98 99 //设置网络图片 100 public BaseViewHoler setImage(int id, String url) { 101 ImageView imageView = getView(id); 102 if (url != null) { 103 Glide.with(context).load(url).into(imageView); 104 } 105 return this; 106 } 107 108 //设置圆形图 109 public BaseViewHoler setImage(int id, String url, Context context) { 110 ImageView imageView = getView(id); 111 if (url != null) { 112 Glide.with(context).load(url).bitmapTransform(new CropCircleTransformation(context)).into(imageView); 113 } 114 return this; 115 } 116 117 //设置本地图片 118 public BaseViewHoler setImage(int id, int resId) { 119 ImageView imageView = getView(id); 120 if (resId != 0) { 121 imageView.setImageResource(resId); 122 } 123 return this; 124 } 125 126 127}
ListView+RecyclerView缓存类的封装
Stella981
2021-10-11
1142 0 0
点赞
收藏
评论区
加载中...