Android-网络请求与RecyclerView显示空白页面问题

1.问题描述

在activityA跳转到activityB(主要控件为recyclerview)时一开始为空白,手指往上移动一小段距离之后数据才显示出来。一开始模拟器上运行没问题,但是多重复执行这个动作之后也出现了几次空白屏的情况,在真机上大部分都是空白屏。

这里是直接跳转到activityB后的效果图(已证明跳转是没问题的)


bug.gif

2.解决过程

一开始以为是recyclerview版本的问题,因为它的版本是28,而我的真机是26的。但上网百度了很多之后发现recyclerview并不存在这个问题,只是一些子项view的的尺寸问题而已。然后刚好今早有安卓课,我又去问了老师,老师说是recyclerview控件和activity刷新的问题,因为模拟器上和真机的效果不同,然后也是没能解决。接着我就回去自己到处打印日志,因为我觉得有可能是网络请求的数据还没放进ArrayList数据集,recyclerview就已经setAdapter(ArrayList)了。果然,在打印的日志中ArrayList的size为0,这就正好印证了我的想法。

3.解决方案

既然是网络数据不同步的问题,那就可以利用一些异步消息解析机制handler咯。因为我用的网络请求是同步的,需要新开一个线程。那么就可以在放数据进ArrayList的操作之后调用handler的sendMessage方法,然后在handler的handleMessage方法里放进recyclerview的setAdapter(ArrayList)方法就行了。

主要代码如下:


子线程获取数据并放进ArrayList.png

图片.png

图片.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容