【发布时间】:2020-10-27 13:58:28
【问题描述】:
我向/list.php?page=1 发送请求并使用 Paging 3 组件在 UI 中显示数据。
在第一个请求中,areItemsTheSame(new, old) 方法什么都不做。没有登录Logcat。
然后我用 SwipeRefreshLayout 刷新数据并请求发送相同的 api (/list.php?page=1)。
DiffUtil.ItemCallback areItemsTheSame(new, old) 方法检查项目两次。一次是降序,然后是升序。
Logcat:
我:新项目:3308 = 旧项目:3308 我:检查:真
我:新项目:3307 = 旧项目:3307 我:检查:真
我:新项目:3306 = 旧项目:3306 我:检查:真
我:新项目:3305 = 旧项目:3305 我:检查:真
我:新项目:3304 = 旧项目:3304 我:检查:真
我:新项目:3303 = 旧项目:3303 我:检查:真
我:新项目:3302 = 旧项目:3302 我:检查:真
我:新项目:3301 = 旧项目:3301 我:检查:真
我:新项目:3300 = 旧项目:3300 我:检查:真
我:新项目:3300 = 旧项目:3300 我:检查:真
我:新项目:3301 = 旧项目:3301 我:检查:真
我:新项目:3302 = 旧项目:3302 我:检查:真
我:新项目:3303 = 旧项目:3303 我:检查:真
我:新项目:3304 = 旧项目:3304 我:检查:真
我:新项目:3305 = 旧项目:3305 我:检查:真
我:新项目:3306 = 旧项目:3306 我:检查:真
我:新项目:3307 = 旧项目:3307 我:检查:真
我:新项目:3308 = 旧项目:3308 我:检查:真
【问题讨论】:
-
请贴出更新方法的完整代码(即你调用diff util的确切位置)
-
我添加了VacancyFragment、Adapter、ViewModel和DataSource代码
-
areContentsTheSame() 方法检查一次
-
submitData&refresh方法,如果你不介意的话 -
提交和刷新方法是内置方法。
标签: android kotlin android-recyclerview android-diffutils android-paging-3