listview 和 recyclerview 的比较

来源:互联网 发布:趣分期走淘宝套现 编辑:程序博客网 时间:2024/06/05 09:50
我们都知道在Android中listView 和 recyclerView都可以实现列表页的展示,那么他们之间都有什么样的区别呢。1、viewHolder,viewHolder 是用来保存视图引用的类。在listView中因为listView中没有严格的viewHolder设计模式,这也只是一种推荐的使用方式,所以通过创建viewHolder来提升性能不是必须的。只是不使用viewHolder的话,listView每次getView()的时候都会调用findViewById(int),这样导致浪费性能,展示迟缓。而在recyclerView中必须使用RecyclerView.ViewHolder。2、列表页item的展现形式,listView只能在垂直方向上滚动,API没有提供listView在水平方向上的滚动的支持。而recyclerView可以通过设置RecyclerView.LayoutManager来定制不同风格的视图,例如:a、LinearLayoutManager,可以支持水平和竖直方向上滚动的列表。b、StaggeredGridLayoutManager,可以支持交叉网格风格的列表,类似于瀑布流或者Pinterest。c、GridLayoutManager,支持网格展示,可以水平或者竖直滚动。 3、Item动画,在ListView中没有提供任何方法或者接口,方便开发者实现Item的增删动画。相反地,可以通过设置RecyclerView的RecyclerView.ItemAnimator来为条目增加动画效果。另外还可以使用DefaultItemAnimator。 4、设置数据源,在LisView中针对不同数据封装了各种类型的Adapter,比如用来处理数组的ArrayAdapter和用来展示Database结果的CursorAdapter。相反地,在RecyclerView中必须自定义实现RecyclerView.Adapter并为其提供数据集合。 5、设置条目之间的分割线,在ListView中可以通过设置android:divider属性来为两个Item间设置分割线。RecyclerView添加此效果,则必须使用RecyclerView.ItemDecoration,这种实现方式不仅更灵活,而且样式也更加丰富。 6、设置点击事件,在ListView中存在AdapterView.OnItemClickListener接口,用来绑定条目的点击事件。而在RecyclerView中,并没有提供这样的接口,不过,提供了另外一个接口RcyclerView.OnItemTouchListener,用来响应条目的触摸事件。
原创粉丝点击