请教一个RecyclerView点击加载更多后的列表数据错乱的问题

加载更多之前的列表数据正常获取,当加载更多成功后,点击加载更多的item,比如点击第11条,拿的确是第12条的数据
图片描述
1.加载更多的数据设置:

  private void setLoadMoreData(String json) {
        //处于子线程
        Gson gson = new Gson();
        final CollectedBean collectedBean = gson.fromJson(json, CollectedBean.class);
        final List<CollectedBean.DataBean> data = collectedBean.getData();
        mDatas = new ArrayList<>();
        Log.d(TAG, "1111curr="+mCurrentCounter+"    ,data="+data.size());
        final int totalCount = mCurrentCounter + data.size();//视频总条数
//        Log.d(TAG, "1110=   "+totalCount);
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if (mCurrentCounter >= totalCount) {
                    //数据全部加载完毕
                    mAdapter.loadMoreEnd();
                } else {
                    if (isErr) {
                        for (int i = 0; i < data.size(); i++) {
                            CollectedBean.DataBean dataBean = data.get(i);
                            CollectedBean bean = new CollectedBean();
                            String title = dataBean.getName();
                            int watchCount = dataBean.getClick();
                            String img = dataBean.getImg();
                            String totalTime = dataBean.getLenght();
                            bean.setTitle(title);//标题
                            Log.d(TAG, "1121=   "+title);
                            bean.setWatchCont(watchCount + "");//观看数
                            bean.setImgUrl(img);//封面
                            bean.setTotalTime(totalTime);//视频时长
                            bean.setData(data);
//                            collectedBean.setData(data);
                            mAdapter.addData(bean);
                            mDatas.add(bean);
                        }
                        //加载更多后position总数需要添加为和totalCount相同数目,否则会下标越界
                        for (int i = 0; i < totalCount; i++) {
                            CollectedBean.DataBean dataBean = data.get(i);
                            data.add(dataBean);
                        }
                        mCurrentCounter = mAdapter.getData().size();
                        //主动调用加载完成,停止加载
                        mAdapter.loadMoreComplete();
                    } else {
                        //获取更多数据失败
                        isErr = true;
                        //同理,加载失败也要主动调用加载失败来停止加载(而且该方法会提示加载失败)
                        mAdapter.loadMoreFail();
                    }
                }
            }
        });
    }

2.item点击事件:

 @Override
    public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
        List<CollectedBean> data = getData();
        CollectedBean collectedBean = data.get(position);
        List<CollectedBean.DataBean> data1 = collectedBean.getData();
        CollectedBean.DataBean dataBean = data1.get(position);
        String title = dataBean.getName();//主标题
        String coverImg = dataBean.getImg();//封面
        int vid = dataBean.getVid();//vid
        int click = dataBean.getClick();//观看数
        String length = dataBean.getLenght();//视频时长
        List<CollectedBean.DataBean.QualityBean> quality = dataBean.getQuality();
        CollectedBean.DataBean.QualityBean superClearQualityBean = quality.get(0);////获取超清视频URL
        CollectedBean.DataBean.QualityBean highClearQualityBean = quality.get(1);////获取高清视频URL
        CollectedBean.DataBean.QualityBean standardClearQualityBean = quality.get(2);////获取标清视频URL
        String superClearUrl = superClearQualityBean.getUrl();
        String highClearUrl = highClearQualityBean.getUrl();
        String standardClearUrl = standardClearQualityBean.getUrl();
        BaseApplication.getApplication().getMap().put("superClearUrl", superClearUrl);//超清视频地址
        BaseApplication.getApplication().getMap().put("highClearUrl", highClearUrl);//高清视频地址
        BaseApplication.getApplication().getMap().put("standardClearUrl", standardClearUrl);//标清视频地址
        BaseApplication.getApplication().getMap().put("titleName", title);//主标题
        Log.d(TAG, "1123=   "+title);//初始化10条数据点击正常,加载更多后,点击第11条拿的却是第12条的数据
        BaseApplication.getApplication().getMap().put("subName", "");//副标题
        BaseApplication.getApplication().getMap().put("coverImg", coverImg);//封面图片
        BaseApplication.getApplication().getMap().put("channelName", "栏目信息");//栏目信息
        BaseApplication.getApplication().getMap().put("startColor", "#FFFFFF");//开始渐变色
        BaseApplication.getApplication().getMap().put("endColor", "#FFFFFF");//结束渐变色
        BaseApplication.getApplication().getMap().put("vid", vid + "");//视频id,根据此id获取视频播放详情页的"相关推荐"列表数据
        BaseApplication.getApplication().getMap().put("watchCount", click + "");//观看数
        BaseApplication.getApplication().getMap().put("myLikeTotalTime", length);//视频时长
        Intent toVideoPlay = new Intent(mContext, VideoPlayActivity.class);
        mContext.startActivity(toVideoPlay);
        //传递数据到视频播放界面
    }
阅读 2.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题