完整的RecylerView的使用方法和例子
一、RecylerView的特点
1、 不关心Item是否显示在正确的位置,通过设置不同LayoutManager 的实例让Item显示不同的风格。
2、 不关心 Item间如何分离。要定义Item间的分隔效果,可以实现ItemDecoration的子类,ItemDecoration里提供了onDraw()和onOverDraw()方法来绘制Item间的分隔情况。
3、 不关注Item增加与删除的动画效果。可以通过ItemAnimator来增加Item增加与删除的效果。
4、 仅仅关注如何回收与复用View
二、RecylerView可以做什么
1、 可以显示ListView和GridView的风格
2、 可以显示横向的ListView和GridView
3、 可以显示瀑布流的效果
4、 可以很灵活的制定Item增加与删除的效果
三、如何导入jar包
因为我是用Android Studio实现的,所以在这里我只说一下Android Studio是如何导入jar包,以及遇到的问题并如何解决的。导入方法如下:
File——>Prooject Structure——>选择你当前的Modules——>Dependencies——>"+"——>Library dependency——>找到“recycleview-V7”包——>"OK"。
导入进来的jar包可以在build.gragle中看到,如图:

注意:导进来的jar包版本有可能和compileSdkVersion的版本不一致,会报红,但是不影响程序的正常运行。我觉得会报红可能是因为compileSdkVersion版本 比24低,但是现在还没有24版本的SDK。如图:

四、代码实现
这个项目在写的时候还是比较全面的,实现了ListView、GridView、横向GridView、瀑布流以及添加和删除Item,还实现了前三项的点击事件和长按事件,但是没有实现瀑布流的点击事件,如果大家有需求的话,可以参考前三个的点击事件和长按事件,我只是写了一个回调,因为RecylerView本身并没有提供点击事件的接口。还有一点需要注意的是,Item的间隔线,系统并没有写好ItemDecoration的实现类,需要我们自己去实现,Dome里我已经实现好了这个类叫DividerItemDecoration,大家也可以参考github,链接是:https://gist.github.com/alexfu/0f464fc3742f134ccd1e。由于瀑布流的特殊性,所以它的适配器是单独写的一个类叫StaggeredAdapter。为了让大家比较容易的实现效果,我就不在这里讲解我的代码了,里边重要的地方我已经写了小注释,下面我把我写的Dome给大家分享一下吧,链接是:http://pan.baidu.com/s/1cogQn0

完整的RecylerView的使用方法和例子的更多相关文章
- C++ stringstream介绍,使用方法与例子
From: http://www.usidcbbs.com/read-htm-tid-1898.html C++引入了ostringstream.istringstream.stringstream这 ...
- 【转】C++ stringstream介绍,使用方法与例子
原文来自:http://www.cnblogs.com/lancidie/archive/2010/12/03/1895161.html C++引入了ostringstream.istringstre ...
- C#A类派生类强转基类IL居然还是可以调用派生类中方法的例子
大家都知道在C#中,如果B类继承自A类,如果一个对象是B类型的但是转换为A类型之后,这个对象是无法在调用属于B类型的方法的,如下例子: 基类A: public class A { } 派生类B: pu ...
- oracle调用java方法的例子(下面所有代码都是在sql/plus中写)
在Oracle中调用Java程序,注意:java方法必须是static类型的,如果想在JAVA中使用system.out/err输出log. 需要在oracle 中执行"call dbms_ ...
- JSP调用JAVA方法小例子
用JAVA编写的函数 package doc; //定义一个包 public class Dy { //定义一个类 public static int Sub(int x,int y){ //定义函数 ...
- JSTL.带标签体的标签,方法和例子
1. 实现 forEach 标签: 两个属性: items(集合类型, Collection), var(String 类型) doTag: 遍历 items 对应的集合 把正在遍历的对象放入到 pa ...
- java写文件时,输出不完整的原因以及解决方法close()或flush()
在java的IO体系中,写文件通常会用到下面语句 BufferedWriter bw=new BufferedWriter(new FileWriter("sql语句.txt")) ...
- 从.src.rpm包中提取出完整的源码的方法
1 什么是完整的源码 就是说,最初始的源码加上打了所有的patch后的源码,即最新的源码. 2 过程 2.1 从.src.rpm中提取完整的rpm工程文件 2.1.1 rpm to cpio rpm2 ...
- asp.net 抽象方法和虚方法的用法区别,用Global类重写Application_BeginRequest等方法为例子
不废话,直接贴代码 public abstract class LogNetGlobal : System.Web.HttpApplication { protected void Applicati ...
随机推荐
- wpf 如何设置滚动条在超出范围的时候才显示?(转)
VerticalScrollBarVisibility="Auto" 垂直自动显示 HorizontalScrollBarVisibility="Auto" ...
- 不直接用NSLog
公司中不直接使用NSLog,而是利用宏定义自己的打印函数,将该打印函数写在项目的.pch文件中.调试的时候往往用到好多打印,但发布的时候确不需要.(一下是在公司中的一些处理) 自定义NSLog 一,固 ...
- 【LeetCode题意分析&解答】33. Search in Rotated Sorted Array
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...
- (iOS)推送常见问题
1.为什么启动的时候出现 Did Fail To Register For Remote Notifications With Error的错误程序运行的时候出现下面的错误信息: did Fail T ...
- 【android开发】小说阅读器
新人开发理念 1 activity 是每个功能页面的入口 2 动画效果需要配合资源文件中,动画的定义 3 文件的读取是有权限控制的 4 布局应该尽量简单,这样才能让程序跑的飞快 前记 重新开始一个新的 ...
- nginx+tomcat+redis完成session共享
本文记录nginx+redis+tomcat实现session共享的过程 nginx安装:http://blog.csdn.net/grhlove123/article/details/4783467 ...
- 转载Spring IntrospectorCleanupListener
"在服务器运行过程中,Spring不停的运行的计划任务和OpenSessionInViewFilter,使得Tomcat反复加载对象而产生框架并用时可能产生的内存泄漏,则使用Introspe ...
- Linux系统服务 1 ---- rSyslog日志服务
1 日志 1 日志是系统用来记录系统运行时候的一些相关的信息的纯文本文件 2 日志的目的是保存相关程序的运行状态,错误信息等.为了对系统进行分析,保存历史记录以及在出现错误的时候发现分析错误使用 3 ...
- 定制ToolChain for ARM
**************************************************************************编写:王卫无,北京讯业互联科技有限公司版本号:V1. ...
- Suricata, to 10Gbps and beyond(X86架构)
Introduction Since the beginning of July 2012, OISF team is able to access to a server where one int ...