一、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的使用方法和例子的更多相关文章

  1. C++ stringstream介绍,使用方法与例子

    From: http://www.usidcbbs.com/read-htm-tid-1898.html C++引入了ostringstream.istringstream.stringstream这 ...

  2. 【转】C++ stringstream介绍,使用方法与例子

    原文来自:http://www.cnblogs.com/lancidie/archive/2010/12/03/1895161.html C++引入了ostringstream.istringstre ...

  3. C#A类派生类强转基类IL居然还是可以调用派生类中方法的例子

    大家都知道在C#中,如果B类继承自A类,如果一个对象是B类型的但是转换为A类型之后,这个对象是无法在调用属于B类型的方法的,如下例子: 基类A: public class A { } 派生类B: pu ...

  4. oracle调用java方法的例子(下面所有代码都是在sql/plus中写)

    在Oracle中调用Java程序,注意:java方法必须是static类型的,如果想在JAVA中使用system.out/err输出log. 需要在oracle 中执行"call dbms_ ...

  5. JSP调用JAVA方法小例子

    用JAVA编写的函数 package doc; //定义一个包 public class Dy { //定义一个类 public static int Sub(int x,int y){ //定义函数 ...

  6. JSTL.带标签体的标签,方法和例子

    1. 实现 forEach 标签: 两个属性: items(集合类型, Collection), var(String 类型) doTag: 遍历 items 对应的集合 把正在遍历的对象放入到 pa ...

  7. java写文件时,输出不完整的原因以及解决方法close()或flush()

    在java的IO体系中,写文件通常会用到下面语句 BufferedWriter bw=new BufferedWriter(new FileWriter("sql语句.txt")) ...

  8. 从.src.rpm包中提取出完整的源码的方法

    1 什么是完整的源码 就是说,最初始的源码加上打了所有的patch后的源码,即最新的源码. 2 过程 2.1 从.src.rpm中提取完整的rpm工程文件 2.1.1 rpm to cpio rpm2 ...

  9. asp.net 抽象方法和虚方法的用法区别,用Global类重写Application_BeginRequest等方法为例子

    不废话,直接贴代码 public abstract class LogNetGlobal : System.Web.HttpApplication { protected void Applicati ...

随机推荐

  1. js中使用控件名和数组下标方式获取控件的值时失败

    在做界面展示时涉及到表单行项目的增加和删除时,我们一帮都使用js的脚本实现表单行的增加和删除,那么在进行表单的提交的时我们会再页面上进行提交数据的初步校验,进行数据的初步校验时,就要动态获取控件的值. ...

  2. 浅谈Struts2(四)

    一.Struts2的拦截器(Intercept) 作用:把多个Action中的共有代码,提取至拦截器,从而减少Action中的冗余代码. 1.Action拦截器 a.编写interceptor类 pu ...

  3. BZOJ 3223: Tyvj 1729 文艺平衡树(splay)

    速度居然进前十了...第八... splay, 区间翻转,用一个类似线段树的lazy标记表示是否翻转 ------------------------------------------------- ...

  4. Redis的入门Demo(java)

    java代码部分参考了:http://www.runoob.com/redis/redis-java.html 在java中使用Redis,需要引入Redis驱动,就是jedis-2.1.0.jar, ...

  5. 编写带参数decorator

    无参的@log装饰器: def log(f): def fn(x): print 'call ' + f.__name__ + '()...' return f(x) return fn 发现对于被装 ...

  6. 高质量程序设计指南C/C++语言——malloc/free使用要点

  7. BootStrap学习1 输入提示

    首先参考这个页面http://www.bootcss.com/javascript.html#typeahead 我只是把里面最基本的东西抠出来了 <!DOCTYPE html> < ...

  8. HDU 1849 Rabbit and Grass

    题解:因为棋子可重叠,所以就等于取石子问题,即尼姆博弈,SG[i]=i,直接将输入数据异或即可. #include <cstdio> int main(){ int SG,n,a; whi ...

  9. hdoj 1269 迷宫城堡(强连通分量)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1269 思路分析:该问题要求判断是否每两个房间都可以相互到达,即求该有向图中的所有点是否只构成一个强连通 ...

  10. 发送Email并添加附件

    1. 添加命名空间 using System.Net.Mail; using System.Net; 2. The HTML MarpUp <html xmlns="http://ww ...