后台返回10条的列表数据,我这样加载多布局成功后为什么原来10条的数据只有9条了?
Fragment加载多布局的方法:
@Override
protected void onLazyLoad() {
HomeBean homeBean = getArguments().getParcelable(AppExtra.HOME_DATA);
List<HomeBean.FocusEventBean> focusEventBeans = homeBean.getFocus_event();//获取比赛数据
List<HomeBean.ArticleInfoBean> articleInfoBean = homeBean.getArticleInfo();//首页资讯列表(布局一)
mAdapter = new HeadlineAdapter(R.layout.item_home_page, articleInfoBean, homeBean);
//添加首页headerview
view = View.inflate(getActivity(), R.layout.home_header_view, null);
mViewPager = view.findViewById(R.id.vp_home_header);
mViewPager.addOnPageChangeListener(this);
mPageList = new ArrayList<>();
for (int i = 0; i < focusEventBeans.size(); i++) {
//动态生成顶部比赛页面
HomeBean.FocusEventBean gameBean = focusEventBeans.get(i);
HomeGameFragment homeGameFragment = HomeGameFragment.newInstance(gameBean);
FragmentPage fragmentPage = new FragmentPage(homeGameFragment, "");
mPageList.add(fragmentPage);
}
BaseFragmentPagerAdapter adapter = new BaseFragmentPagerAdapter(getChildFragmentManager(), mPageList);
initHeader();//ViewPager为第一页的数据展示
mViewPager.setAdapter(adapter);
mAdapter.addHeaderView(view);
mAdapter.setOnItemClickListener(this);
//加载多布局
for (int i = 0; i < articleInfoBean.size(); i++) {
HomeBean.ArticleInfoBean bean = articleInfoBean.get(i);
if (i == 3) {
bean.setLayoutType(HomeBean.ArticleInfoBean.SECOND_TYPE); //在第四条item设置第二种布局
} else {
bean.setLayoutType(HomeBean.ArticleInfoBean.NORMAL_TYPE);//默认第一种布局
}
}
//TODO:布局一数据少了一条
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
DividerItemDecoration mDividerItemDecoration = new DividerItemDecoration(getActivity(), linearLayoutManager.getOrientation());
mRecyclerView.addItemDecoration(mDividerItemDecoration);
mRecyclerView.setLayoutManager(linearLayoutManager);
mRecyclerView.setAdapter(mAdapter);// 设置文章列表数据
// mAdapter.notifyItemChanged(2,articleInfoBean.size());
// mAdapter.notifyItemChanged(3);
// mAdapter.notifyItemRangeChanged(2,articleInfoBean.size());
}
Adapter:
public class HeadlineAdapter extends BaseQuickAdapter<HomeBean.ArticleInfoBean, BaseViewHolder> implements BaseQuickAdapter.OnItemClickListener {
private TodayReadAdapter mAdapter;
private List<String> mDatas;
private HomeBean mHomeBean;
public HeadlineAdapter(int layoutResId, @Nullable List<HomeBean.ArticleInfoBean> data,HomeBean homeBean) {
super(layoutResId, data);
this.mHomeBean=homeBean;
setMultiTypeDelegate(new MultiTypeDelegate<HomeBean.ArticleInfoBean>() {
@Override
protected int getItemType(HomeBean.ArticleInfoBean homeListBean) {
return homeListBean.layoutType;//根据你的实体类来判断布局类型;
}
});
getMultiTypeDelegate()//设置Recycler不同类型对应的布局文件
.registerItemType(HomeBean.ArticleInfoBean.NORMAL_TYPE, R.layout.item_home_page)//默认布局(第一种布局类型)
.registerItemType(HomeBean.ArticleInfoBean.SECOND_TYPE, R.layout.today_read);//第二种布局(今日必读)
}
@Override
protected void convert(BaseViewHolder helper, HomeBean.ArticleInfoBean item) {
switch (helper.getItemViewType()) {
case HomeBean.ArticleInfoBean.NORMAL_TYPE: //默认布局
RequestOptions options = new RequestOptions().placeholder(R.mipmap.temp_banner);
helper.setText(R.id.tv_headerline_title, item.getTitle())//标题
.setText(R.id.tv_headerline_watch_count, String.valueOf(item.getArticle_hits()));//点击数
Glide.with(mContext).load(item.getLeftFigure()).apply(options).into((ImageView) helper.getView(R.id.iv_headerline));//文章图片
break;
case HomeBean.ArticleInfoBean.SECOND_TYPE: //第二种布局
RecyclerView recyclerView = helper.getView(R.id.rv_today_read);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext);
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(linearLayoutManager);
if (mAdapter == null) {
mAdapter = new TodayReadAdapter(R.layout.item_today_read, mHomeBean.getMustRead());
recyclerView.setAdapter(mAdapter);
}
mAdapter.setOnItemClickListener(this);
break;
}
}}