使用RecyclerView和SwipeRefreshLayout 配合在下拉刷新后在快速上拉加载更多。会出现下标越界的情况

来源:互联网 发布:做金融好还是数据好 编辑:程序博客网 时间:2024/05/16 07:47


分析原理:这种情况是因为在调用率刷新的时候把当前list清空,留着装最新的数据,但是在还没有最新数据的时候,就会出现下标越界。


   @Override    public void onRefresh() {        //list.clear();        pageindex = 1;        indexToast=0;        getUrlData("api","getappointlist",loginid,pageindex);    }


上面的list.clear();  应该放在下面这里调用就会解决这个问题:


@Override                public void onSuccess(String t) {                    super.onSuccess(t);                    if (flag){                        finalDialog.dismiss();                    }                    swipe.setRefreshing(false);                    if (pageindex==1){                        //强调刷新的时候清空list                        list.clear();                    }                    try {                        JSONObject jsonObject = new JSONObject(t);                        int errno = jsonObject.getInt("errno");                        if (errno == 0) {                            array = jsonObject.getJSONArray("items");                            Map map;                            for (int i =0;i<array.length();i++){                                JSONObject obj = (JSONObject) array.get(i);                                map = new HashMap();                                map.put("itemname",obj.getString("itemname"));                                map.put("starttime",obj.getString("appointdate"));                                map.put("status",obj.getString("state"));                                map.put("id",obj.getString("id"));                                map.put("appointquhao",obj.getString("appointquhao"));                                list.add(map);                            }                            LogUtil.recordLog("数据列表size:"+list.size());                            refreshRecyclerView(list);                        } else {                            String errors = jsonObject.getJSONArray("errors").getString(0);                            initToast(errors);                        }                    } catch (JSONException e) {                        e.printStackTrace();                    }                }
只有在接口调取成功,清空list在进行刷新。





阅读全文
1 0
原创粉丝点击