课前准备
- 把 HomePagerContent.DataBean 中的 seller_id 类型从 int 改成 long(找不到可以全改)
    private long seller_id;
    public long getSeller_id() {
            return seller_id;
        }
    public void setSeller_id(long seller_id) {
        this.seller_id = seller_id;
    }
com.google.gson.JsonSyntaxException: java.lang.NumberFormatException
课堂笔记
- CategoryPagerPresenterImpl 创建懒汉式单例
    private static ICategoryPagerPresent mInstance = null;
    private CategoryPagerPresenterImpl(){}
    public static ICategoryPagerPresent getInstance() {
        if (mInstance == null) {
            mInstance = new CategoryPagerPresenterImpl();
        }
        return mInstance;
    }
- 在 HomePagerFragment 中重写 initPresenter() 方法创建 CategoryPagerPresenterImpl,并注册 view 层接口
    @Override
    protected void initPresenter() {
        mCategoryPagerPresent = CategoryPagerPresenterImpl.getInstance();
        mCategoryPagerPresent.registerViewCallback(this);
    }
    @Override
    protected void release() {
        if (mCategoryPagerPresent != null) {
            mCategoryPagerPresent.unregisterViewCallback(this);
        }
    }
- 这样 view 层就能根据 materialId 拿到对应数据了
    @Override
    protected void loadData() {
        Bundle arguments = getArguments();
        String title = arguments.getString(Constant.KEY_HOME_PAGER_TITLE);
        int materialId = arguments.getInt(Constant.KEY_HOME_PAGER_MATERIAL_ID);
        LogUtils.d(this, "title ---->" + title);
        LogUtils.d(this, "materialID ---->" + materialId);
        if (mCategoryPagerPresent != null) {
            mCategoryPagerPresent.getContentByCategoryId(materialId);
        }
    }
- 数据需要 CategoryPagerPresenterImpl 从网络上获取的
- 首先在 Api 里创建 Call,url 带参数 materialId 和 page
    @GET
    Call<HomePagerContent> getHomePagerContent(@Url String url);
- 创建 UrlUtils 用来处理带参数的 url,并添加创建 HomePagerUrl 的方法
public class UrlUtils {
    public static String createHomePagerUrl(int materialId, int page) {
        return "discovery/" + materialId + "/" + page;
    }
}
    @Override
    public void getContentByCategoryId(int categoryId) {
        Retrofit retrofit = RetrofitManager.getInstance().getRetrofit();
        Api api = retrofit.create(Api.class);
        Integer targetPage = pagesInfo.get(categoryId);
        if (targetPage == null) {
            targetPage = DEFAULT_PAGE;
            pagesInfo.put(categoryId, targetPage);
        }
        String homePagerUrl = UrlUtils.createHomePagerUrl(categoryId, targetPage);
        Call<HomePagerContent> task = api.getHomePagerContent(homePagerUrl);
        task.enqueue(new Callback<HomePagerContent>() {
            @Override
            public void onResponse(Call<HomePagerContent> call, Response<HomePagerContent> response) {
                int code = response.code();
                if (code == HttpURLConnection.HTTP_OK) {
                    HomePagerContent body = response.body(); 
                } 
            }
            @Override
            public void onFailure(Call<HomePagerContent> call, Throwable t) {  
            }
        });
    }
学习感悟
- 不知道 page 有什么作用,也许后面能用到  
- 观看视频