public class BaseViewHoler extends RecyclerView.ViewHolder { private Context context; //行佈局的view private View mView; //用來裝載id的集合 用法和map相似 private SparseArray<View> sparseArray; public BaseViewHoler(View itemView, Context context) { super(itemView); mView = itemView; sparseArray = new SparseArray<>(); this.context = context; } //初始化RecyclerView的 public static BaseViewHoler createRecyclerViewHolder(Context context, ViewGroup group, int layoutId) { View itemView = LayoutInflater.from(context).inflate(layoutId, group, false); BaseViewHoler baseViewHoler = new BaseViewHoler(itemView, context); return baseViewHoler; } //初始化listView的 public static BaseViewHoler createListViewHolder(View view, ViewGroup group, int layoutId) { BaseViewHoler baseViewHoler = null; if (view == null) { view = LayoutInflater.from(group.getContext()).inflate(layoutId, group, false); baseViewHoler = new BaseViewHoler(view, group.getContext()); view.setTag(baseViewHoler); } else { baseViewHoler = (BaseViewHoler) view.getTag(); } return baseViewHoler; } //根據id來得到組件 public <T extends View> T getView(int id) { //建立一個view 根據id從集合裏取出 View view = sparseArray.get(id); //若是沒有取到 那麼就經過findViewById的方式找到這個組件,而後將組件存放在集合裏 if (view == null) { view = mView.findViewById(id); sparseArray.put(id, view); } //最後返回的這個就是咱們想要的組件了 return (T) view; } //本身隨意的定義方法 //最基本的設置文字的方法 public BaseViewHoler setText(int id, String str) { TextView textView = getView(id); if (str != null) { textView.setText(str); } return this; } //第三方輪播圖banner public BaseViewHoler setBanner(int id, String url) { final Banner banner = getView(id); if (url != null) { NetTool.getInstance().startRequest(url, BannerBean.class, new CallBack<BannerBean>() { @Override public void onSuccess(BannerBean response) { List<String> bannerBean = new ArrayList<String>(); for (int i = 0; i < response.getData().getBanners().size(); i++) { bannerBean.add(response.getData().getBanners().get(i).getImage_url()); } banner.setImageLoader(new GlideImageLoader()); banner.setImages(bannerBean); banner.isAutoPlay(true);//自動播放 banner.setDelayTime(3000);//設置延時時間 banner.setIndicatorGravity(BannerConfig.CENTER);//設置小圓點的位置 banner.start(); } @Override public void onError(Throwable e) { } }); } return null; } class GlideImageLoader extends ImageLoader { @Override public void displayImage(Context context, Object path, ImageView imageView) { Glide.with(context).load(path).into(imageView); } } //設置網絡圖片 public BaseViewHoler setImage(int id, String url) { ImageView imageView = getView(id); if (url != null) { Glide.with(context).load(url).into(imageView); } return this; } //設置圓形圖 public BaseViewHoler setImage(int id, String url, Context context) { ImageView imageView = getView(id); if (url != null) { Glide.with(context).load(url).bitmapTransform(new CropCircleTransformation(context)).into(imageView); } return this; } //設置本地圖片 public BaseViewHoler setImage(int id, int resId) { ImageView imageView = getView(id); if (resId != 0) { imageView.setImageResource(resId); } return this; } }