博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RecyclerView下拉加载集合越界问题
阅读量:4964 次
发布时间:2019-06-12

本文共 2706 字,大约阅读时间需要 9 分钟。

问题描述

在做毕业设计app中遇到这样一个问题,使用RecyclerView进行下拉加载数据的时候,比如我每次让它加载5条数据,当服务器端数据总数刚好是5的倍数的时候,不会出现下拉加载数据集合越界的问题,但当服务器数据不能被5整除的时候就会出现集合越界问题。

问题代码

@Override    public void onLoad() {        //下拉加载更多的逻辑        mHandler.postDelayed(new Runnable() {            @Override            public void run() {                //创建一个临时集合                ArrayList
tempLoadTaskInfoLists = new ArrayList<>(); if (mCurrentShowTaskInfoLists.size() < mTaskInfoLists.size()) { //说明有数据 mListsTaskAdapter.CURRENT_STATE = ListsTaskAdapter.REFRESH_DATA_STATE; //临时集合里面就是现在已经显示了多少条数据 for (int i = mCurrentShowTaskInfoLists.size(); i < mCurrentShowTaskInfoLists.size() + t; i++) { tempLoadTaskInfoLists.add(mTaskInfoLists.get(i)); } } else { mListsTaskAdapter.CURRENT_STATE = ListsTaskAdapter.NOT_DATA_STATE; } mCurrentShowTaskInfoLists.addAll(tempLoadTaskInfoLists); //添加数据 mListsTaskAdapter.addData(tempLoadTaskInfoLists); } }, 2000);

解决问题代码

@Override    public void onLoad() {        //下拉加载更多的逻辑        mHandler.postDelayed(new Runnable() {            @Override            public void run() {                //创建一个临时集合                ArrayList
tempLoadTaskInfoLists = new ArrayList<>(); if (mCurrentShowTaskInfoLists.size() < mTaskInfoLists.size()) { int t = 0; //判断剩余的数据有没有5的倍数 if ((mTaskInfoLists.size() - mCurrentShowTaskInfoLists.size()) / 5 != 0) { //如果不等于0,说明有5 t = 5; } else { //如果等于0,则说明没有5了 t = (mTaskInfoLists.size() - mCurrentShowTaskInfoLists.size()) % 5; } //说明有数据 mListsTaskAdapter.CURRENT_STATE = ListsTaskAdapter.REFRESH_DATA_STATE; //临时集合里面就是现在已经显示了多少条数据 for (int i = mCurrentShowTaskInfoLists.size(); i < mCurrentShowTaskInfoLists.size() + t; i++) { tempLoadTaskInfoLists.add(mTaskInfoLists.get(i)); } } else { mListsTaskAdapter.CURRENT_STATE = ListsTaskAdapter.NOT_DATA_STATE; } mCurrentShowTaskInfoLists.addAll(tempLoadTaskInfoLists); //添加数据 mListsTaskAdapter.addData(tempLoadTaskInfoLists); } }, 2000); }

总结:

我们只需要把下拉加载的数据个数做成动态的,而不是写成固定的数据。加以判断就可以避免出现集合越界的错误了

转载于:https://www.cnblogs.com/upuptop/p/11154446.html

你可能感兴趣的文章
C#生成随机数
查看>>
Android应用程序与SurfaceFlinger服务的连接过程分析
查看>>
Java回顾之多线程
查看>>
机电行业如何进行信息化建设
查看>>
9、总线
查看>>
Git 笔记 - section 1
查看>>
2018 Multi-University Training Contest 10 - TeaTree
查看>>
2018 Multi-University Training Contest 10 - Count
查看>>
HDU6203 ping ping ping
查看>>
《人人都是产品经理》书籍目录
查看>>
如何在git bash中运行mysql
查看>>
OO第三阶段总结
查看>>
构建之法阅读笔记02
查看>>
DataTable和 DataRow的 区别与联系
查看>>
检索COM 类工厂中CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败
查看>>
mysql数据库中数据类型
查看>>
Fireworks基本使用
查看>>
两台电脑间的消息传输
查看>>
Linux 标准 I/O 库
查看>>
.net Tuple特性
查看>>