您的位置:首页 > 其它

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

2017-11-17 17:31 183 查看


分析原理:这种情况是因为在调用率刷新的时候把当前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在进行刷新。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐