Android的新特性RecycleView
来源:互联网 发布:11登陆不上 网络异常 编辑:程序博客网 时间:2024/05/22 18:06
RecycleView
1.RecyclerView是什么?
RecylerView:是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥
有 item回收复用的功能,这一点从它的名字recylerview即回收view也可以看出。
2.RecyclerView的优点是什么?
根据官方的介绍RecylerView是ListView的升级版,既然如此那RecylerView必然有它的优点,现就
RecylerView相对于ListView的优点罗列如下:
①RecylerView封装了viewholder的回收复用,也就是说RecylerView标准化了ViewHolder,编写
Adapter 面向的是ViewHolder而不再是View了,复用的 逻辑被封装了,写起来更加简单。
②提供了一种插拔式的体验,高度的解耦,异常的灵活,针对一个Item的显示RecylerView专门抽取出
以通过LinearLayoutManager这个类来进行控制(与GridView效果对应的是GridLayoutManager,与瀑
布流对应的还有StaggeredGridLayoutManager等),也就是说RecylerView不再拘泥于ListView的线
RecylerView的ItemDecoration这个类,然后针对自己的业务需求去抒写代码。
③可以控制Item增删的动画,可以通过ItemAnimator这个类进行控制,当然针对增删的动画,
RecylerView有其自己默认的实现。
3.使用步骤: 3.1导入recyclerView-v7包 3.2在布局文件中添加一个RecycleView
<android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="wrap_content" android:layout_height="wrap_content" />
3.3创建一个布局文件用来给每一个Item布局 3.4声明数据并与布局文件中的控件进行绑定 声明RecycleView对象 private RecyclerView recyclerView; 声明数据集合 private List<Map<String, Object>> mList; 3.5设置布局管理器格式 线性布局管理器 recyclerView.setLayoutManager(new LinearLayoutManager(this)); 3.6 创建适配器 同ListView一样,RecyclerView只负责显示,而组建数据的任务,我们也需要一个Adapter来完成。 MyAdapter adapter = new MyAdapter(); 适配器与RecycleView进行绑定 recyclerView.setAdapter(adapter); 创建适配器 :**Adapter需要继承自RecyclerView.Adapter** 在这里我们可以给Adapter一个泛型,这个泛型指定了该Adapter 所使用的ViewHolder,如果不指定泛型,则默认是RecyclerView.ViewHolder, 即自定义ViewHolder的父类 class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHoler> { 重写3个方法 当需要拿到ViewHolder 的时候就会调用,返回值与之前的泛型相同,在加载不同类型的布局的时 候,可以根据ViewType来创建不同的ViewHolder viewType是Item的数据类型 public MyViewHoler onCreateViewHolder(ViewGroup parent, int viewType) { 根据拿到的布局文件创建一个ViewHolder View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.list_item, null); MyViewHoler viewHoler = new MyViewHoler(view); return viewHoler; } 当内容和布局进行绑定的时候回调这个方法,每当有新数据进入屏幕的时候,也会回调这个方法 参数holder和ViewHolder类型与泛型所规定的类型相同, 参数position代表的是该item的位置可以通过position来获取相应的数据 public void onBindViewHolder(MyViewHoler holder, int position) { 从数据列表中获取数据 String text = mList.get(position).get("text").toString(); int image = (Integer) mList.get(position).get("image"); 将数据设置到界面上 holder.textView.setText(text); holder.imageView.setImageResource(image); } 返回数据的个数 public int getItemCount() { return mList.size(); } 3.7创建ViewHolder 与ListView的ViewHolder不同,RecyclerView的ViewHolder需要 继承自**RecyclerView.ViewHolder**
class MyViewHoler extends RecyclerView.ViewHolder { TextView textView; ImageView imageView; public MyViewHoler(View itemView) { super(itemView); 进行控件关联 textView = (TextView) itemView.findViewById(R.id.textView); imageView = (ImageView) itemView.findViewById(R.id.imageView); } }
**表格(GridLayoutManager)** 将线性布局管理器替换为表格布局管理器,就可以使用表格布局 recyclerView.setLayoutManager(new GridLayoutManager(this,3)); 第一个参数:上下文 第二个参数:列数 GridLayoutManager(Context context, int spanCount, int orientation, boolean reverseLayout) 第二个参数spanCount表示表格的行数或者列数;第三个参数表示是水平滑动或者是竖直方向滑动; 最后一 个参数表示是否从数据的尾部开始显示。 **瀑布流 (StaggeredGridLayoutManager)** 将线性布局管理器替换为瀑布流布局管理器,就可以使用瀑布流布局 recyclerView.setLayoutManager(new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL)); 第一个参数是行(或列的数目) 第二个参数是滚动方向,如果为横向滚动,则每一个item的行高固定 如果为纵向滚动,则每一个item的列宽固定
- Android的新特性RecycleView
- Android 5.0新特性RecycleView的基本使用
- android5.0新特性 ToolBar+RecycleView的使用
- android 5.0的新控件 RecycleView
- Recycleview新特性以及Textview的添加图片的新特性
- Android程序开发——5.0新特性 RecycleView替换ListView
- android N 的新特性 android 7.0的新特性
- Android N 的新特性
- android 6.0的新特性
- android 5.0 新的特性
- Android 7.0的新特性
- android 7.0的新特性
- Android RecycleView---- RecycleView的简单使用
- Android RecycleView的使用
- android RecycleView的使用
- android RecycleView的使用
- Android Recycleview的用法
- Android 新控件RecycleView源码分析一
- 装windows和Linux系统时找不到硬盘,pe安装系统没有出现磁盘,不能识别磁盘
- Android的ClearEdtitext自定义封装class
- 关于angularjs中$http POST请求参数的问题
- Java:myeclipse连接MySQL的ODBC详细步骤
- 解析xml
- Android的新特性RecycleView
- 如何快速做饭?
- linux下简单对拍shell脚本
- fread
- caffe DB类学习
- Servlet生命周期与工作原理
- 【转】phpstorm+Xdebug断点调试PHP
- harris角点检测计算详细步骤
- J2EE 1 网络服务器