搜了文章有一个跟我一模一样错误的,不知他怎么解决的 私信没回 麻烦大家帮忙看看
创建并配置了适配器
我在onContenLoaded的方法打了log 但是运行模拟的时候并没有输出
是数据回传的问题吗,我改怎么找我的问题呢
您的每一个用心回答,都会让这个世界变得更美好一些!
看看你的presenter层代码,数据加载到了,但是没有调到onContentLoaded这个方法哟
onContenLoaded没有输出,那就是他没有被调用。你去看看是那个位置需要调用。什么时候调用的。你就知道bug在哪里了。
onContentLoaded没Log输出,那证明什么呢?证明你这个方法没运行。那没运行的话你是不是得再往上追踪一下?其实数据没加载出来很简单,你请求到数据之后做了什么才是关键的
这种问题跟着数据流走就好。
数据请求回来,确定有回来没有---->设置到适配器里----> 绑定数据---->确保有设置布局管理器,item你可以设置一个背景,硬编码一个高度,这样就知道哪个环节有问题了。
debug了一下 callbacks的值是0 这是什么问题啊
public class CategoryPagerPresenterImpl implements ICategoryPagerPresenter { private Map<Integer,Integer> pageInfo = new HashMap<>(); public static final int DEFAULT_PAGE = 1; private CategoryPagerPresenterImpl(){ } private static ICategoryPagerPresenter sInstance = null; public static ICategoryPagerPresenter getInstance(){ if (sInstance == null) { sInstance = new CategoryPagerPresenterImpl(); } return sInstance; } @Override public void getContentByCategoryId(int categoryId) { //加载内容根据分类id for (ICategoryPagerCallback callback : callbacks) { if (callback.getCategoryId()==categoryId){ callback.onLoading(); } } Retrofit retrofit = RetrofitManager.getInstance().getRetrofit(); API api = retrofit.create(API.class); Integer targetPage = pageInfo.get(categoryId); if (targetPage==null) { targetPage = DEFAULT_PAGE; pageInfo.put(categoryId,targetPage); } String homePagerUrl = UrlUtils.createHomePagerUrl(categoryId,targetPage ); LogUtils.d(this,"home page url"+homePagerUrl); 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(); LogUtils.d(CategoryPagerPresenterImpl.this,"code-->"+code); if (code == HttpURLConnection.HTTP_OK) { HomePagerContent pagerContent = response.body(); LogUtils.d(CategoryPagerPresenterImpl.this,"pagecontent"+pagerContent); //把数据给到ui handleHomePageContentResult(pagerContent,categoryId); }else { handleNetworkError(categoryId); } } @Override public void onFailure(Call<HomePagerContent> call, Throwable t) { LogUtils.d(CategoryPagerPresenterImpl.this,"onFailure-->"+t.toString()); handleNetworkError(categoryId); } }); } private void handleNetworkError(int categoryId) { for (ICategoryPagerCallback callback : callbacks) { if (callback.getCategoryId()==categoryId) { callback.onNetworkError(); } } } private void handleHomePageContentResult(HomePagerContent pagerContent, int categoryId) { //通知UI层更新数据 List<HomePagerContent.DataBean> data = pagerContent.getData(); for(ICategoryPagerCallback callback:callbacks){ if (callback.getCategoryId()==categoryId) { if (pagerContent==null|| data.size()==0) { callback.onEmpty(); }else{ List<HomePagerContent.DataBean> looperData = data.subList(data.size() - 5, data.size()); callback.onLooperListLoaded(looperData); callback.onContentLoaded(data); } } } } @Override public void loadMore(int categoryId) { } @Override public void reLoad(int categoryId) { } private List<ICategoryPagerCallback> callbacks = new ArrayList<>(); @Override public void registerViewCallback(ICategoryPagerCallback callback) { if (callbacks.contains(callback)) { callbacks.add(callback); } } @Override public void unregisterViewCallback(ICategoryPagerCallback callback) { callbacks.remove(callback); } }
看看你的presenter层代码,数据加载到了,但是没有调到onContentLoaded这个方法哟
onContenLoaded没有输出,那就是他没有被调用。你去看看是那个位置需要调用。什么时候调用的。你就知道bug在哪里了。
onContentLoaded没Log输出,那证明什么呢?证明你这个方法没运行。那没运行的话你是不是得再往上追踪一下?其实数据没加载出来很简单,你请求到数据之后做了什么才是关键的
这种问题跟着数据流走就好。
数据请求回来,确定有回来没有---->设置到适配器里----> 绑定数据---->确保有设置布局管理器,item你可以设置一个背景,硬编码一个高度,这样就知道哪个环节有问题了。
debug了一下 callbacks的值是0 这是什么问题啊