开发过程中发现页面一直在抖动式的执行加载更多,如下所示:
经过调试,发现程序一直在回调onLoadMoreRequested方法,
这是什么情况???
查看源码后,发现原来是处理获取到的数据时,出现的问题(以下插入的是假数据):
private void load(int page){
mList.clear();
for (int i = 0; i < PAGE_COUNT; i++) {
int index = (int) (Math.random() * 10);
if (index > 9) index = 9;
else if (index < 0) index = 0;
TempInfo item = new TempInfo(thumbs[index], titles[index], types[index]);
mList.add(item);
}
dealWithData(page);
}
这里为了不创建过多无用的对象,所以创建了一个全局的集合对象mList,每次获取数据前先clean掉旧数据,然后读取新数据。
而恰恰就是这个看似正确的处理方法,导致了adapter无限回调onLoadMoreRequested方法的罪魁祸首。
应该直接新建集合对象接收新数据,此处应改为mList = new ArrayList<>();
改完之后一切运行正常。