参考:http://blog.csdn.net/lmj623565791/article/details/45059587

RecyclerView是在android5.0加入的,android有提供向下兼容的包,而这个包在对于用eclipse(而且没有更新最新的sdk)开发的人来说的确是比较麻烦的事,如果有朋友属于我上面说的情况-------用eclipse,而且还不是最新的sdk,那就需要导入两个包:一个是android.support.v7.widget.RecyclerView,还有一个就是对应版本的android.support.v4包。很多人都是直接从网上下一个android.support.v7.widget.RecyclerView包就拿过来用,结果报一堆错,基本也就是上面说的版本不对应的缘故。其实这个包在自己的sdk(sdk比较新)下是有的,在sdk目录下的extras/android/support/v7/RecyclerView下面,如果v7下面没有RecyclerView那就是你的sdk版本过低,最好的方法就是下载最新的sdk,下载方法我就不说了大家自行查阅。

上面是使用eclipse的情况,如果使用的是Android Studio,那就简单了,直接点击左上角的File/Project Structure,在左边Modules中找到我们的项目,点击一下确定焦点在我们要添加RecyclerView的项目中,然后在右边点击Dependencies,然后找一下有个加号,可能在右边也可能在下边(不同版本Android Studio会有出入),然后点击library dependency,直接在下面找recyclerview(主要是找名字中带recyclerview v7的,全名上可能有差异,我的Android Studio中这个包的名字是com.android.support:recyclerview-v7...)点击ok就搞定了。

建议大家还是使用Android Studio,毕竟大势所趋。。。

上面讲了导包的问题,接下来进入RecyclerView使用的讲解,这里只举例实现瀑布流。
首先设置LayoutManager,会用到的就那么几种
LinearLayoutManager 现行管理器,支持横向、纵向。
GridLayoutManager 网格布局管理器
StaggeredGridLayoutManager 瀑布就式布局管理器

我们要实现瀑布流就选择设置LayoutManager为StaggeredGridLayoutManager,使用方法mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(4,StaggeredGridLayoutManager.VERTICAL));,其中第一个参数表示为4列(这个根据后一个参数来,这里后一个参数是垂直,所以就是表示有4列,如果后一个参数是水平那就表示4行)。

之后可以设置动画,这里我觉得使用默认的效果就可以了,如果自己想实现的话也可以,可以参考https://github.com/gabrielemariotti/RecyclerViewItemAnimators,设置动画的方法mRecyclerView.setItemAnimator(new DefaultItemAnimator());这个就是使用了默认的动画效果。设置了之后在添加或者删除数据的时候就会有比较好看的动画效果了,添加数据之后要使用notifyItemInserted(position),删除使用notifyItemRemoved(position)。

接下来设置适配器,使用setAdapter方法设置,这里要注意一点,RecyclerView自己有一个适配器(不再使用BaseAdapter),其中强制我们使用ViewHolder,具体和之前的BaseAdapter方法没什么大的区别,只是将之前的getView方法一分为二:onBindViewHolder,onCreateViewHolder。在onCreateViewHolder创建viewholder,在onBindViewHolder中设置属性值。

到上面这一步就已经实现了Gridview,但是你会发现着还不是瀑布流,而且item之间没有空隙,怎么实现空隙能,又要用到另一个方法叫做addItemDecoration(),而要传的参数尽然没有默认,要自己去实现,也就是新建一个类extends RecyclerView.ItemDecoration,我觉得其中主要要实现的方法就是getItemOffsets(),实现这个之后你会发现最后一行和最后一列之后也出现了空隙,这不是我们想要的效果,但是,我这里要说但是,如果你去控制最后一行和最后一列之后没有空隙当你添加或者删除的时候也会出现不想要的东西。举例说明:你的RecyclerView有4列,最后一列之后没有空隙,当你在第二列添加一项,则原先的第四列(代码中就是postion在3的哪一个item)就到了第二行,这时候你就会看到,第二行的第一项和第二项连在了一起,因为第二行的第一项(从第一行移下来的)没有设置空隙。讲到这里大致就清楚了这个方法,其实还有另外两个方法可以重写,就是给空隙填充上东西,当我觉得没那么重要,这里就不说了,可以去看下http://blog.csdn.net/lmj623565791/article/details/45059587 ,其中有较为详细的介绍。还有其他的实现方法就是不使用这个addItemDecoration方法(太不好用了),而是在布局中做文章,就是在item的外层布局中设置layout_margin或者padding(我觉得padding比较好)。这里的话就暂且先使用addItemDecoration实现,以作为此方法的演示。

有了空隙之后就变成了一个Gridview,怎么变成瀑布流呢?很简单了,就只要在onBindViewHolder设置item的高度就可以了。我参考的文章中有讲,这里不再做详细介绍。

附上源码:http://download.csdn.net/detail/u012806692/9471813




更多相关文章

  1. Android 代码混淆及反编译方法
  2. android传值方法之一
  3. android实现app通过jni调用C/C++方法
  4. android为按钮添加事件的三种方法
  5. Android在初始化时弹出popwindow的方法 .
  6. android开发环境搭建最新方法
  7. Android自定义属性 及 TypedArray的使用方法
  8. android程序退出当前activity的方法

随机推荐

  1. 使用Animation轮播图片
  2. Android应用程序组件Content Provider的
  3. Android之——通用安装apk方法
  4. Android(安卓) 资源类型
  5. FFmpeg In Android(安卓)- H264码流解码/
  6. 学习Android书籍
  7. Html jquery实现根据 IOS和Android访问跳
  8. Android(安卓)SQLiteDatabase中query、in
  9. Android(安卓)Window 二 可移动悬浮窗口
  10. android关于手机和3.0版本以上平板去标题