设为首页 加入收藏

TOP

Android开发学习之路-DiffUtil使用教程(三)
2017-10-13 10:35:48 】 浏览:6867
Tags:Android 开发 习之 -DiffUtil 使用 教程
个对象会在什么地方收到呢?实际上在RecyclerView.Adapter中有两个onBindViewHolder方法,一个是我们必须要重写的,而另一个的第三个参数就是一个payload的列表:

1         @Override
2         public void onBindViewHolder(RecyclerView.ViewHolder holder, int position, List payloads) {}

所以我们只需在Adapter中重写这个方法,如果List为空,执行原来的onBindViewHolder进行整个Item的更新,否则根据payloads的内容进行局部刷新:

 1         @Override
 2         public void onBindViewHolder(RecyclerView.ViewHolder holder, int position, List payloads) {
 3             if (payloads.isEmpty()) {
 4                 onBindViewHolder(holder, position);
 5             } else {
 6                 MyViewHolder myViewHolder = (MyViewHolder) holder;
 7                 Bundle bundle = (Bundle) payloads.get(0);
 8                 if (bundle.getString(NAME_KEY) != null) {
 9                     myViewHolder.name.setText(bundle.getString(NAME_KEY));
10                     myViewHolder.name.setTextColor(Color.BLUE);
11                 }
12             }
13         }

这里的payloads不会为null,所以直接判断是否为空即可。

 

这里注意:如果RecyclerView中加载了大量数据,那么算法可能不会马上完成,要注意ANR的问题,可以开启单独的线程进行计算。

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android快乐贪吃蛇游戏实战项目开.. 下一篇浅析Dagger2的使用

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目