轮播请求数据

activity中

loadBanner();
private void loadBanner() {
//通过网络封装类获取到数据
    NetUtils instance = NetUtils.getInstance();
    instance.getDataFromServer(bannerApi);
    instance.setCallback(this);
}

//请求成功后,图片都在一个接口中时

@Override
public void onSuccess(String result) {
//gson解析
    Gson gson = new Gson();
    BannerBean bannerBean = gson.fromJson(result, BannerBean.class);


    //遍历数据添加图片
    for (BannerBean.BodyBean.ResultBean resultBean : bannerBean.getBody().getResult()) {
        ImageView imageView = new ImageView(this);
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        ImageLoader.getInstance().displayImage(resultBean.getBarnerPic(), imageView);
        imageViews.add(imageView);//private List<ImageView> imageViews = new ArrayList<>();
    }
    //设置adapter
    adapter = new BannerAdapter(imageViews);
    buner.setAdapter(adapter);
    //自动轮播
    setBanner();
    buner.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    stopBanner();//点击的时候暂停轮播,具体方法如下
                    break;
                case MotionEvent.ACTION_UP:
                    setBanner();//抬起是开始轮播,具体方法如下
                    break;
            }
            return false;
        }
    });
}

 //开始轮播

private void setBanner() {
    handler.sendEmptyMessageDelayed(1, 2000);
}

 //暂停轮播

private void stopBanner() {
    handler.removeCallbacksAndMessages(null );
}

适配器中(参数构造,四个重写)

private List<ImageView> list;

public BannerAdapter(List<ImageView> list) {
    this.list = list;
}

@Override
public int getCount() {
    return Integer.MAX_VALUE;
}

@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
    return view == object;
}

@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
    ImageView imageView = list.get(position % list.size());
    ViewGroup parent = (ViewGroup) imageView.getParent();
    if (parent != null) {
        parent.removeView(imageView);
    }
    container.addView(imageView);
    return imageView;
}

@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
    container.removeView((View) object);
}

猜你喜欢

转载自blog.csdn.net/Lsnzf3134/article/details/81951056