课堂笔记
编写轮播图的适配器
- 在 fragment_home_pager 布局中添加 looper_pager
    <androidx.viewpager.widget.ViewPager
        android:id="@+id/looper_pager"
        android:layout_width="match_parent"
        android:layout_height="125dp"
        android:overScrollMode="never" />
    @BindView(R.id.looper_pager)
    public ViewPager looperPager;
- 给 looperPager 创建添加适配器 LooperPagerAdapter,并重写 instantiateItem 和 destroyItem 方法
public class LooperPagerAdapter extends PagerAdapter {
    @NonNull 
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {  
        return ...;
    }
    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
    }
    @Override
    public int getCount() {
        return 0;
    }
    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return false;
    }
}
处理轮播图的数据
- 轮播图的数据用的是 HomeViewPager 每页的最后5个数据
    private void handleHomePagerContentResult(HomePagerContent pagerContent, int categoryId) {
        List<HomePagerContent.DataBean> data = pagerContent.getData();
        for (ICategoryPagerCallback callback : callbacks) {
            if (callback.getCategoryId() == categoryId) {
                if (pagerContent == null || pagerContent.getData().size() == 0) {
                    callback.onEmpty();
                } else {
		    //拆分DataBean,拿到looperData的数据集合
                    List<HomePagerContent.DataBean> looperData = data.subList(data.size() - 5, data.size());
                    callback.onLooperListLoaded(looperData);
                    callback.onContentLoaded(data);
                }
            }
        }
    }
- onLooperListLoaded 通过接口拿到数据后,创建方法 setData 把数据给 LooperPagerAdapter
    @Override
    public void onLooperListLoaded(List<HomePagerContent.DataBean> contents) {
        mLooperPagerAdapter.setData(contents);
    }
- LooperPagerAdapter 创建集合保存数据,并显示数据(创建图片详情看代码注释)
public class LooperPagerAdapter extends PagerAdapter {
    private List<HomePagerContent.DataBean> mData = new ArrayList<>();
    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        Context context = container.getContext();
        HomePagerContent.DataBean dataBean = mData.get(position);
        //创建图片
        ImageView iv = new ImageView(context);
        //加载图片数据
        Glide.with(context).load(UrlUtils.getCoverPath(dataBean.getPict_url())).into(iv);
        //创建布局
        ViewGroup.LayoutParams layoutParams = 
            new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        //给图片设置布局
        iv.setLayoutParams(layoutParams);
        //给图片设置比例类型
        iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
        //添加图片到container
        container.addView(iv);
        return iv;
    }
    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }
    @Override
    public int getCount() {
        return mData.size();
    }
    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }
    public void setData(List<HomePagerContent.DataBean> contents) {
        mData.clear();
        mData.addAll(contents);
        notifyDataSetChanged();
    }
}