ListView+RecyclerView緩存類的封裝

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;
    }


}
相關文章
相關標籤/搜索