请教一个RecyclerView加载多布局的问题

后台返回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;
        }
    }}
阅读 2.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题