ListView 与 RecyclerView 简单对比

简单使用:

        ListView继承重写BaseAdapter类;

        自定义ViewHolder与convertView的优化(判断是否为空);

        RecyclerView继承重写RecyclerView.Adapter与RecyclerView.ViewHolder

        设置LayoutManager,以及layout的布局效果

区别:

        ListView的布局比较单一,只有一个纵向效果

        RecyclerView的布局效果丰富,可以在LayoutMananger中设置:线性布局(横向纵向),表格布局,瀑布流布局,还可以在layoutMananger的API中自定义Layout(scrollToPosition(),findViewByPosition()等等)

空数据处理:

        ListView中有个setEmptyView()用来处理数据为空的情况

        RecyclerView没有这个API,需要进行数据判断来实现数据为空的情况

HeaderView与FooterView:

        ListView通过addHeaderView()与addFooterView()来添加头部底部item,来实现上拉刷新下拉加载的情况,并不会影响Adapter的编写

        RecyclerView没有这两个API,我们需要时可以在Adapter中自己编写,根据ViewHolder的Type与View来实现,但是这样会影响到Adapter的数据,添加了Header与Footer后实际的position会大于数据的position

局部刷新:

        在ListView中刷新数据是用notifyDataSetChanged(),但是这种刷新数据是全局刷新的,每个Item的数据都会重新加载一遍,就会非常消耗资源

        RecyclerView可以实现局部刷新,notifyItemChanged()

        但是要在ListView实现局部刷新,我们可以在Adapter中实现一个onItemChanged(),在方法中获取这个item的position(可以通过getFirstVisiblePosition()),然后调用getView()来刷新这个item的数据

动画效果:

        RecyclerView已经封装好API来实现动画效果,例如notifyItemChanged() notifyItemMoved(),如果需要自定义的动画效果可以通过相应的接口实现自定义的动画效果RecyclerView.ItemANimator类,然后调用RecyclerView.setItemAnimator()

        ListView没有动画效果的实现,但我们可以在Adapter自己实现item的动画效果

Item点击事件:

        ListView中有onItemClickListener(),onItemLongClickListener(),onItemSelectedListener(),但是添加HeaderView与FooterView就不一样了,HeaderView与FooterView都会算进position,就有可能抛出数组越界。

        我们可以在getItemId()中通过返回id来标识相应的item;但是我们可以在Adapter中针对每个Item写在getView()中比较合适

        Recycle让View中提供了addOnItemTouchListener() 监听item的触摸事件,我们可以通过RecyclerVIew的addOnItemTouchListener()加上Gesture Detector来实现类似ListView那样监听某个item某个操作方法。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【Android 控件 RecyclerView】 概述 RecyclerView是什么 从Android 5.0...
    Rtia阅读 308,110评论 27 439
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,062评论 25 709
  • 又到了更新博文的时间了,最近在看一本很不错的心理学书籍,名字叫做 《拖延心理学》,封面长下面这样子 书的内容主要是...
    ec95b5891948阅读 57,694评论 38 472
  • 内容 抽屉菜单 ListView WebView SwitchButton 按钮 点赞按钮 进度条 TabLayo...
    小狼W阅读 5,478评论 0 10
  • 下山回城的路上云气翻腾,落在袖口衣襟融成水迹,用竹笥装了满满一笼带回家再放出来。浓稠的飘在竹制顶篷上,用裹着饧糖的...
    溽夏阅读 2,444评论 0 1