先说问题
列表下拉刷新后迅速上拉加载下一页,下一页数据接口返回了,但是页面刷新没有显示出来。
原因
列表增加下拉刷新和上拉加载,通常会直接调用notifyDataSetChanged()方法刷新。但是这样在分页加载时,页面会闪一下的感觉,尤其是列表中有大量图片的时候更明显。
所以,我使用了notifyItemRangeInserted(int positionStart, int itemCount)方法来刷新分页数据。问题就出在这里,如果是上拉加载下一页的话,这样刷新没问题。但是我再下拉刷新时也调用了这个方法,然后把第一个参数positionStart设置为0了,看起来似乎也可以。但是实际上就出现了上面的问题。
解决办法
下拉刷新时调用notifyDataSetChanged()来刷新列表,上拉加载时使用notifyItemRangeInserted(int positionStart, int itemCount)。
具体原因大概跟后者方法内部实现方式有关,它在加载数据是要固定起始位置,防止页面闪动。如果有大佬知道更具体的原因,记得分享出来哦~