课前准备
- 把 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 有什么作用,也许后面能用到

- 观看视频