一、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. C++内置类型对象之间的转换

    C++定义了一组内置类型对象之间的标准转换,在必要时它们被编译器隐式地应用到对象上. 隐式类型转换发生在下列这些典型情况下. 1. 在混合类型的算数表达式中 规则:在这种情况下最宽的数据类型成为目标转 ...

  2. java ee环境搭建

    1.安装java(tm)2 platform 2.下载安装Java EE SDK 版本:Java Platform,Enterprise Edition 7 SDK (with JDK 7u45) 下 ...

  3. IOS 播放音频

    1,播放短音频 #import <AudioToolbox/AudioToolbox.h>#import "GLYViewController.h"static voi ...

  4. android-意图Intent

    Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) ,Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递 Intent 来 ...

  5. win7 资源管理器的背景色修改

    主要参考 http://blog.sina.com.cn/s/blog_49c182c20100w3nb.html win7 通过dll修改背景色首先找到这个文件C:\Windows\Resource ...

  6. 启用Apache Mod_rewrite模块

    Ubuntu 环境 在终端中执行 sudo a2enmod rewrite 指令后,即启用了 Mod_rewrite 模块. 另外,也可以通过将 /etc/apache2/mods-available ...

  7. C++模板:读入优化

    int scan(int &x){ while(c=getchar(),c<'0'||c>'9');x=c-'0'; while(c=getchar(),c>='0'& ...

  8. HDU 1286 找新朋友

    题解:分析题目,就是一个裸的欧拉函数,于是AC. #include <cstdio> int eular(int n){ int ret=1,i; for(i=2;i*i<=n;i+ ...

  9. JAVA GUI学习 - JInternalFrame浮动窗口:可拖拽窗口(依赖于父窗口)

    public class JInternalFrameKnow extends JInternalFrame { public JInternalFrameKnow() { this.setBound ...

  10. c++复习(未完待续)

    1.使函数不能在定义该函数的文件之外访问的方法: (1)声明函数为static(2)将函数放到无名名字空间中 namespace { void g() { ......... } }