您的位置:首页 > 移动开发 > Android开发

android listview 替代品recyclerview详解

2016-09-17 19:31 405 查看
RecyclerView这个控件也出来很久了,相信大家也学习的差不多了,如果还没学习的,或许我可以带领大家体验一把这个艺术般的控件。

据官方介绍,该控件是属于之间用的非常多的ListView和GridView的替代品,既然能替代用的如此普遍的它们,这自然有其该有的优势。

1)相对于ListView而言RecyclerView的优势体现在:

①封装了之前ListView的优化,封装了之前ViewHolder的复用,这样在自定义适配器的时候我们面向的不再是View,而是一个ViewHolder.

②提供了插板式的体验,高度解耦,异常灵活,针对每一项的显示抽取出了相应的类来控制每一个item的显示。若想实现网格视图或者瀑布流或者横向的ListView都可以通过制定不一样的LayoutManager来实现高大上的效果,这样就可以针对自己的业务逻辑随意发挥了。

③现在的RecyclerView对增删也有了动画的加入,并且你还可以自定义这些动画。

④对于Adaper适配器,现在刷新也增加了相应的方法,虽然之前的notifyDataSetChanged()同样可以实现这样的效果,但是每次刷新整个界面在数据多的时候必然会大大影响用户体验。所以Adapter增加了更新数据的方法notifyItemInserted和notifyItemRemoved,这样就可以在增删数据的时候只刷新被操作的Item,而且还加入了高大上的动画效果呢。

2)基本用法:

相信描述了这么多,你一定对这个神奇的控件迫不及待想尝试一波了。要用到这个RecyclerView很简单,首先在Gradle中添加支持包:

下面就先来一个简单的用法,首先来Activity

  在上面的Activity代码中,可见,我们需要自己指定LayoutManager,代码中用的是LinearLayoutMagener,你可以试试其他的。

再看看Adapter,有一个对大多数人来说很悲催的是,我们的ListView中一定会有的点击事件,而RecyclerView并没有提供这样的方法,这些点击事件都是需要我们自己学的,我这里Adapter就简单的实现了下,点击就会删除该Item。

  继承这个Adapter需要指定一个ViewHolder的泛型,当然这个ViewHolder通常是由我们作为一个静态类自己写的。其他这个就像我们之前ListView中的BaseAdapter一样。

自己还可以实现其他的点击事件。

下面看下Xml,第一个是主布局,第二个是每一个项的布局,我这里就简单只实现一个TextView了。

  

  这样运行出来你估计就会看到没有分割线,那么分割线怎么弄呢,看下文档,需要我们自己去写,这个网上有很多。

上一个我看到过很多次的。

  这样使用的是系统的分割线。

这样在Style中可以自己更改。

  自定义一个Drawble

  别忘了去把之前我给的MainActivity.java中把分割线那句代码解去注释。

最后上一波简单的运行图吧。



 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: