引言

前几天在同事的提醒下发现V7中有了一个新的工具类SortedListAdapterCallback,配合RecyclerView Adapter和SortedList一起使用更加方便的管理我们在Adapter中的数据,省去我们很多“多余“的工作。

使用方法

  • 申明一个SortedList类型的数据聚合
	 SortedList<Object> mDataList;
  • 实现SortedListAdapterCallback抽象类
	static class ObjectListCallback extends SortedListAdapterCallback<Object>{

        public ObjectListCallback(RecyclerView.Adapter adapter) {
super(adapter);
} @Override
public int compare(Object o1, Object o2) {
//TODO:
return 0;
} @Override
public boolean areContentsTheSame(Object oldItem, Object newItem) {
//TODO:
return false;
} @Override
public boolean areItemsTheSame(Object item1, Object item2) {
//TODO:
return 0;
}
}

其中compare()函数是判断SortedList中数据的现实顺序的。而areContentsTheSame()和areItemsTheSame()这两个抽象方法初看好像差不多(.),但其实区别还是很大的,areContentsTheSame()是取代了equals方法,用于判断SortedList中Item是否改变,如果改变则调用onChanged()函数。 而areItemsTheSame()则是用于判断SortedList中两个Item是否代表相通对象,其实就是数据的去重。

  • 创建一个RecyclerView Adapter,并进行SortedList的初始化。
	mDataList = new SortedList<>(Object.class, new ObjectListCallback(mAdapter));
  • 当数据有发生改变时,例如删除,增加等,你只需直接对mDataList进行相应操作,再无需关心mAdapter内数据显示更新问题,例如notifyDataChanged等通知函数的调用,因为SortedListAdapterCallback内的回调函数会自动帮你完成。
	mDataList.beginBatchedUpdates();
mDataList.addAll(object);
mDataList.endBatchedUpdates();

这样就简单地完成了数据的加载,RecyclerView会自动刷新UI。

局限性

SortedListAdapterCallback目前仅支持与RecyclerView Adapter搭配使用,并不支持ListView。

结语

第一次见到SortedListAdapterCallback这个工具类时,第一感觉就是眼前一亮,因为它和我们一般认知的Adapter与DataLis间的依赖关系完全相反,它是将Adapter直接“塞入“到DataList中并把细节都进行了封装,这样我们就是只要关心DataList中的数据更新问题,而无需关心RecyclerView的各种刷新,哈哈,真的是非常方便,非常建议大家使用。

作者:XycZero

查看原文:http://www.xyczero.com/blog/article/27/.

Android RecyclerView Adapter 新式用法之SortedListAdapterCallback的更多相关文章

  1. 【转】Android各种Adapter的用法

    转自:http://my.oschina.net/u/658933/blog/372151 Android各种Adapter的用法 发表于5个月前(2015-01-27 10:56)   阅读(143 ...

  2. 极简的Android RecyclerView Adapter(使用DataBinding)

    阅读本篇文章需要读者对Android Databinding和RecyclerView有一定的了解. 简介 我们知道,DataBinding的核心理念是数据驱动.数据驱动驱动的目标就是View,使用D ...

  3. Android RecyclerView SearchView基本用法1

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/82 背景: 做了很多年的app开发,貌似没见过没有搜索功能 ...

  4. Android RecyclerView.Adapter notifyDataSetChanged 不起作用

    我在自己动手写RecyclerView的上拉加载更多,最后就差一步,这个时候数据已经加载完了,UI上面没有显示,我而且也调用了notifyDataSetChanged刷新item的数据,但是一直没效果 ...

  5. Android开发教程 - 使用Data Binding(六)RecyclerView Adapter中的使用

    本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fr ...

  6. Android控件RecyclerView的基本用法

    Android控件RecyclerView的基本用法 转 https://www.jianshu.com/p/e71a4b73098f   github: https://github.com/Cym ...

  7. Android之Adapter用法总结-(转)

    Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid Vie ...

  8. Android之Adapter用法总结(转)

    Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid Vie ...

  9. Android之Adapter用法总结

    http://blog.csdn.net/fznpcy/article/details/8658155 Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器 ...

随机推荐

  1. cas 单点登录配置

    服务端配置 cas是个好东西,很灵活很好用,但是配置起来很麻烦 cas官方网站 http://downloads.jasig.org/ 下载服务端 CAS Server 3.3.3 Final 1.将 ...

  2. Ehcache简单说明及使用

    EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存 ...

  3. 【Android - 框架】之Fresco的使用

    当下有很多图片加载框架,常见的有Glide.Fresco.Picasso等.Glide因为其体积小.缓存机制强大等优点,受到了广大程序员的青睐:Fresco虽然体积比较大,缓存机制也没有Glide强大 ...

  4. Python3.x爬虫教程:爬网页、爬图片、自己主动登录

    林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka 摘要:本文将使用Python3.4爬网页.爬图片.自己主动登录.并对HTTP协议做了一个简单 ...

  5. cocos2dx实现android的对讯飞语音的合成(语言朗读的实现)

    事实上非常easy,只是有些细节须要注意. 关于讯飞语音在android上的应用,大家须要自己去下载SDK,然后依照讯飞语音提供的api在自己的android的Demo上执行成功,那东西也相当的简单. ...

  6. SSD -----TLC MLC SLC

    SLC缓存什么鬼?TLC评测造假要持续多久 2016.5.5来源:中关村在线 TLC的廉价真的将SSD引入了全面普及的高速公路上,谈到TLC我们更多的理解是TLC的P/E(Program/Erase ...

  7. I/O体系结构和设备驱动程序

    http://blog.csdn.net/kafeiflynn/article/category/789844

  8. 趣谈iOS运行时的方法调用原理

    一个成熟的计算机语言必然有丰富的体系,复杂的容错机制,处理逻辑以及判断逻辑.但这些复杂的逻辑都是围绕一个主线丰富和展开的,所以在学习计算机语言的时候,先掌握核心,然后了解其原理,明白程序语言设计的实质 ...

  9. SQL Server2005 表分区三步曲(zz)

    前言 SQL Server 2005开始支持表分区,这种技术允许所有的表分区都保存在同一台服务器上.每一个表分区都和在某个文件 组(filegroup)中的单个文件关联.同样的一个文件/文件组可以容纳 ...

  10. Android4.0的Alertdialog对话框,设置点击其他位置不消失

    Android4.0以上AlertDialog,包括其他自定义的dialog,在触摸对话框边缘外部,对话框消失. 可以设置这么一条属性,当然必须先AlertDialog.Builder.create( ...