关于recycleview下拉加载更多数据问题补充

上一篇博客写的存在一些问题,比如上拉数据加载后,数据会回到数据列表的第一个位置,然后虽然我用了
mRecyclerView.scrollToPosition(lastVisibleItem);这个方法,但是会导致一个问题,就是如果不进行上拉加载操作的时候,在别的页面过来,也会自动定位到数据列表的最后一个位置,然后我就换了一种写法
mSuperRefreshRecyclerView.moveToPosition(mDataBeanList.size()-1);

然后这种办法依然没有解决我的问题,依然存在数据上拉加载后导致数据定位到第一个位置,我在网上找了一个demo,发现别人能在当前的位置定位是因为没有走adapter
这个适配器方法,而是在上拉加载更多的时候,直接把拿到的数据add进去到集合中,直接把集合丢到adapter适配器中了,而我的接口是多条,进来是一个数据接口,
上拉加载更多是一个数据接口,下拉更新又是一个数据接口,然后我就又新建了一个存放上拉加载更多的数据集合,新建一个联网请求进行数据加载后在把数据add到
最后的集合去,这样就可以解决数据每次进行上拉加载的时候无法定位到当前位置的问题了,上代码



//上拉加载更多
    @Override
    public void onLoadMore() {
        GetDataNet(true);
//        mPaipu_tuijian.addData(mDataBeanList);
        mPaipu_tuijian.notifyDataSetChanged();
        mSuperRefreshRecyclerView.setLoadingMore(false);
//        mSuperRefreshRecyclerView.moveToPosition(mDataBeanList.size()-1);
    }

    //下拉刷新
    @Override
    public void onRefresh() {
        GetDataNet(false);
        mSuperRefreshRecyclerView.setRefreshing(false);
    }

上拉加载走的联网请求
  private void getDataload(String url) {
        new ClHttpGet(new ClHttpTool.HttpAsynListener() {

            @Override
            public void httpGetFinish(ClHttpResult result) {
                // TODO Auto-generated method stub
                if (result.getCode() == 200) {
                    String resultStr = result.getResult();
                    JSONObject resultJson = null;
//                    processdata(resultStr);
                    try {
                        resultJson = new JSONObject(resultStr);
                        if (resultJson.optString("data").equals("")){

                        }else {
                            if (mCard_tuijian_bean.getData()==null){

                            }else {
                                mCard_tuijian_bean = JSONparse(resultStr);
                                mDataBeanList_loaddata = mCard_tuijian_bean.getData();
                                mPaipu_tuijian.addData(mDataBeanList_loaddata);
                            }
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }

        }).execute(url);
    }
第一次和下拉刷新走的联网请求
public void getData(String url){

        new ClHttpGet(new ClHttpTool.HttpAsynListener() {

            @Override
            public void httpGetFinish(ClHttpResult result) {
                // TODO Auto-generated method stub
                if (result.getCode() == 200) {
                    String resultStr = result.getResult();
                    processdata(resultStr);
//                    if (refresh) {
//                        DPCache.setData(DPConfig.CommunityHome, resultStr);
//                    }
                } else {

                }

            }

        }).execute(url);

    }

判断走的是上拉还是下拉还是第一次的url确定
 //加载数据
    private void GetDataNet(final boolean refresh) {
        //加载首页推荐数据/2/0
//        String url = DPConfig.CardInterList + "/2"+"/"+lastId;
        String url = DPConfig.CardInterList + "/"+"4";
//        String url = "http://dipaiapp.replays.net/brand/app_brand_list/4";
        if (refresh) {
            lastId+=1;
            url = DPConfig.CardInterList + "/4"+"/" + lastId;
//            getData(url);
            getDataload(url);
        }else {
            getData(url);
        }

    }

OK,终于搞定了这个问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值