RecyclerView使用及其测试方法

原创 2016年05月31日 14:41:42

RecyclerView

RecyclerView自android5.0出来已经1年多了,我们看一下那些还在坚持listview等人的想法:

  • ListView能添加头部,RecyclerView不能
  • ListView稳定,还有很多开源库

RecyclerView与Listview的比较

RecyclerView控件是比ListView更先进、灵活的版本,是ListView的升级版。
为什么这么说:

  • RecyclerView最大的优势就是灵活,RecyclerView只需改变一行代码就可以变化多种不同的布局显示排版

  • RecyclerView.Adapter,比BaseAdapter做了更好的封装,把BaseAdapter的getView方法拆分成onCreateViewHolder方法和onBindViewHolder方法,强制需要创建ViewHolder,这样的好处就是避免了初学者写性能不佳的代码

使用ReclyclerView

  • 添加分割线
  • 列表动画
  • 改变某个数据保持当前位置
  • 添加头部尾部
  • 列表分组

添加分割线

mRecyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL_LIST));

列表动画

推荐一个RecyclerView的动画库(recyclerview-animators

RecyclerView自带添加、删除动画,而ListView则需添加额外的代码才能实现。
删除调用RecyclerView的adapter的notifyItemRemoved
添加调用RecyclerView的adapter的notifyItemInserted
我们可以发现RecyclerView.Adapter和BaseAdapter相比,额外提供了一下这些方法:

// 数据发生了改变,那调用这个方法,传入改变对象的位置。
public final void notifyItemChanged(int position);
// 可以刷新从positionStart开始itemCount数量的item了
public final void notifyItemRangeChanged(int positionStart, int itemCount);
// 添加,传入对象的位置。
public final void notifyItemInserted(int position);
// 删除,传入对象的位置。
public final void notifyItemRemoved(int position);
// 对象从fromPosition移动到toPosition 
public final void notifyItemMoved(int fromPosition, int toPosition); 
//批量添加 
public final void notifyItemRangeInserted(int positionStart, int itemCount);
//批量删除
public final void notifyItemRangeRemoved(int positionStart, int itemCount);

改变某个数据保持当前位置

RecyclerView改变了以往Listview改变列表某一个item数据,然后刷新列表,刷新后则会回到最顶部,而同样的操作但是原来滑动的位置不变。

添加头部尾部

推荐一个RecyclerViewHeader(RecyclerViewHeader
两种使用RecyclerViewHeader的方法:

1.为header创建一个xml布局(可以包括任意view或者ViewGroup)

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="100dp">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="header"/>

</FrameLayout>
RecyclerViewHeader header = RecyclerViewHeader.fromXml(context, R.layout.header);

将RecyclerViewHeader Attach 到RecyclerView,搞定!

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
// set LayoutManager for your RecyclerView
header.attachTo(recyclerView);
Header-already-aligned approach (不会引入任何额外布局):

2.将RecyclerViewHeader布局放在RecyclerView的上层。

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal|top" />

    <com.bartoszlipinski.recyclerviewheader.RecyclerViewHeader
        android:id="@+id/header"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_gravity="center_horizontal|top">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="header"/>

    </com.bartoszlipinski.recyclerviewheader.RecyclerViewHeader>

</FrameLayout>

获得RecyclerViewHeader对象:

RecyclerViewHeader header = (RecyclerViewHeader) findViewById(R.id.header);
把RecyclerViewHeader赋予RecyclerView

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
// set LayoutManager for your RecyclerView
header.attachTo(recyclerView, true);

注意事项
RecyclerViewHeader必须在RecyclerView设置了LayoutManager之后调用。
目前该库适用于LinearLayoutManager,GridLayoutManager和StaggeredGridLayoutManager布局的RecyclerViews。
只支持垂直布局LayoutManager

列表分组

IndexRecyclerViewht
通过RecyclerView实现分组功能的联系人的效果。
1.首字母悬浮在顶部。
2.侧滑删除联系人。
3.联系人索引。

RecyclerView在自动化测试中的应用

5.5.4版本robotium更新后
robotium版本更新

solo类提供了以下对recyclerview的操作

clickInRecyclerView(int itemIndex) 
clickInRecyclerView(int itemIndex, int recyclerViewIndex) 
clickLongInRecycleView(int itemIndex) 
clickLongInRecycleView(int itemIndex, int recyclerViewIndex) 
clickLongInRecycleView(int itemIndex, int recyclerViewIndex, int time) 
scrollDownRecyclerView(int index) 
scrollRecyclerViewToBottom(int index)
scrollUpRecyclerView(int index)
scrollRecyclerViewToTop(int index)
版权声明:本文为博主原创文章,未经博主允许不得转载。

RecyclerView的基本使用方法

1.RecyclerView的使用方法(使用的Android Studio开发) 首先是recyclerview的配置问题,recyclerview是要导入android.support.v7.wi...
  • Javacainiao931121
  • Javacainiao931121
  • 2016年06月18日 09:26
  • 12322

Android RecyclerView 使用完全解析 体验艺术般的控件

Android RecyclerView 使用完全解析 概述 RecyclerView出现已经有一段时间了,相信大家肯定不陌生了,大家可以通过导入support-v7对其进行使用。 据官方的介绍...
  • lmj623565791
  • lmj623565791
  • 2015年04月16日 09:07
  • 841971

安卓中RecyclerView的使用

1.创建一个主布局文件,里面只有FrameLayout,用于放置所要托管的活动:activity_main.xml: xml version="1.0" encoding="utf-8"?> Fra...
  • u010273007
  • u010273007
  • 2017年05月02日 16:39
  • 431

RecyclerView的基本使用方法

作为ListView的豪华加强版,Android支持库中的RecyclerView具有诸多优点。 本篇博客主要用于记录RecyclerView的基本使用方法。...
  • Gaugamela
  • Gaugamela
  • 2017年01月21日 15:22
  • 649

RecyclerView使用详解

RecyclerView是Android 5.x版本中新添加的一个全新控件,他比ListView,GridView更加的灵活,我们能够使用RecyclerView就完成ListView,GridVi...
  • My_First_ID
  • My_First_ID
  • 2016年05月10日 14:20
  • 986

Android开发之RecyclerView的使用全解

转自 http://blog.csdn.net/dmk877/article/details/50816933 自Android 5.0之后,谷歌公司推出了RecylerView控件,...
  • skykingf
  • skykingf
  • 2016年03月08日 14:50
  • 105944

RecyclerView使用完全指南,是时候体验新控件了(一)

官方介绍,RecyclerView用于在有限的窗口展现大量的数据,其实早已经有了类似的控件,如ListView、GridView,那么相比它们,RecyclerView有什么样优势呢? Recycle...
  • xiaohanluo
  • xiaohanluo
  • 2016年08月12日 15:22
  • 5165

Android RecyclerView使用(一) 基本使用

RechclerView简介。RecyclerView比listview更先进更灵活,对于很多的视图它就是一个容器,可以有效的重用和滚动。 1.可以通过设置LayoutManager可以实现Listv...
  • RaphetS
  • RaphetS
  • 2016年04月25日 23:04
  • 1253

Android开发之RecyclerView的使用全解

转载请注明出处:http://blog.csdn.net/dmk877/article/details/50816933      强者不是没有眼泪,而是含着眼泪依然奔跑。    ...
  • it_guang
  • it_guang
  • 2017年02月12日 08:58
  • 467

MVP模式的RecyclerView案例

MVP模式的RecyclerView案例 第一篇博客讲一个用MVP模式写RecyclerView的案例,通过这个例子了解一下MVP模式。...
  • github_36049627
  • github_36049627
  • 2016年10月11日 00:24
  • 942
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RecyclerView使用及其测试方法
举报原因:
原因补充:

(最多只允许输入30个字)