版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/by317966834/article/details/36205923

RecyclerView 是 android-support-v7-21 版本号中新增的一个 Widgets, 另一个 CardView 会在下次介绍使用。官方介绍 RecyclerView 是 ListView 的升级版本号,更加先进和灵活。我们写一个简单的实例例。来看一下到底有多先进和灵活。

build.gradle 配置

android { 

 compileSdkVersion 'android-L' 

 buildToolsVersion "20.0.0"  

 defaultConfig { 

 minSdkVersion 'L' 

 targetSdkVersion 'L' 

 ... 

 } 

 ... 

} 

 dependencies { 

 compile 'com.android.support:recyclerview-v7:+' 

 ... 

}

開始

 

首先是布局文件里使用 RecyclerView

  <RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MyActivity" > <android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
</RelativeLayout>

Activity 中

 

@Override 

 protected void onCreate(Bundle savedInstanceState) { 

super.onCreate(savedInstanceState); 

 setContentView(R.layout.activity_my); 

 RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView); 

 // 创建一个线性布局管理器 

 LinearLayoutManager layoutManager = new LinearLayoutManager(this); 

 // 设置布局管理器 

 recyclerView.setLayoutManager(layoutManager); 

 // 创建数据集
String[] dataset = new String[100]; for (int i = 0; i < dataset.length; i++){ dataset = "item" + i; } // 创建Adapter,并指定数据集 MyAdapter adapter = new MyAdapter(dataset); // 设置Adapter recyclerView.setAdapter(adapter); }

 

RecyclerView 首先的一个特点就是,将 layout 抽象成了一个 LayoutManager,RecylerView 不负责子 View 的布局,我们能够自己定义 LayoutManager 来实现不同的布局效果。眼下仅仅提供了LinearLayoutManager。 LinearLayoutManager 能够指定方向,默认是垂直, 能够指定水平, 这样就轻松实现了水平的 ListView。

接下来看 Adapter 是怎么实现的

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>
{
// 数据集
private String[] mDataset; public MyAdapter(String[] dataset)
{
super();
mDataset = dataset;
} @Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i)
{ // 创建一个View,简单起见直接使用系统提供的布局。就是一个TextView View view = View.inflate(viewGroup.getContext(), android.R.layout.simple_list_item_1, null); // 创建一个ViewHolder ViewHolder holder = new ViewHolder(view); return holder; } @Override
public void onBindViewHolder(ViewHolder viewHolder, int i)
{ // 绑定数据到ViewHolder上 viewHolder.mTextView.setText(mDataset); } @Override
public int getItemCount()
{ return mDataset.length; } public static class ViewHolder extends RecyclerView.ViewHolder
{ public TextView mTextView; public ViewHolder(View itemView)
{ super(itemView); mTextView = (TextView) itemView; } } }

 

RecyclerView 的另一个特点是标准化了 ViewHolder。 编写 Adapter 面向的是 ViewHoder 而不在是View 了, 复用的逻辑被封装了。 写起来更加简单。

 

RecyclerView 简单使用之后, 发现确实灵活了非常多, RecyclerView 的特性还有非常多。 下一篇文章再继续探索,未完待续

 

 

 

 

 

 

将替代ListView的RecyclerView 的使用(一)的更多相关文章

  1. [Android]使用RecyclerView替代ListView(三)

    以下内容为原创,转载请注明: 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4268097.html  这次来使用RecyclerView实现Pinn ...

  2. [Android]使用RecyclerView替代ListView(二)

    以下内容为原创,转载请注明: 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4242541.html 以前写过一篇“[Android]使用Adapte ...

  3. [Android]使用RecyclerView替代ListView(一)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4232560.html RecyclerView是一个比List ...

  4. Android笔记——RecyclerView替代ListView

    ListView是常用列表控件,但设置Adapter时自定义代码较为复杂,因此Android3.0后,增加RecyclerView替代ListView RecyclerView没有提供OnItemCl ...

  5. [Android]使用RecyclerView替代ListView(四:SeizeRecyclerView)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:<> [Android]使用RecyclerView替代ListView(四:SeizeRecyclerView) 在RecyclerV ...

  6. Android最新组件RecyclerView,替代ListView

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/40379159 万众瞩目的android最新5.0版本号不久前已经正式公布了,对于我 ...

  7. 安卓v7支持包下的ListView替代品————RecyclerView

    RecyclerView这个控件也出来很久了,相信大家也学习的差不多了,如果还没学习的,或许我可以带领大家体验一把这个艺术般的控件. 项目已经同步至github:https://github.com/ ...

  8. android listview 替代品recyclerview详解

    安卓v7支持包下的ListView替代品————RecyclerView   RecyclerView这个控件也出来很久了,相信大家也学习的差不多了,如果还没学习的,或许我可以带领大家体验一把这个艺术 ...

  9. Android开发之漫漫长途 XVI——ListView与RecyclerView项目实战

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

随机推荐

  1. winform窗体 控件【公共控件】

    Button   按钮 布局 AutoSize    自动匹配尺寸 Location     确定控件位置,相对左上角坐标 Margin       控件与控件之间的距离 Size           ...

  2. 使用"+"进行字符串拼接

    本文来自:Hollis(微信号:hollischuang) 字符串,是Java中最常用的一个数据类型了.本文,也是对于Java中字符串相关知识的一个补充,主要来介绍一下字符串拼接相关的知识.本文基于j ...

  3. 我是菜鸟,我怕谁(hdu2520)

    我是菜鸟,我怕谁 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  4. Java 强制类型转换

    java提高篇(十一)-----强制类型转换 在java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换. 在Java中由于继承和向上转型,子类可 ...

  5. hadoop_批量命令脚本&同步文件脚本

    1.xcall.sh 批量命令脚本,例:xcall.sh jps ,查看hadoop101~ hadoop104的jps进程 注意:在执行命令的时候,若是提示没有这个命令,但是在本机又可以执行,记得在 ...

  6. php静态变量与方法与phar的使用

    本节用类与静态变量改造之前的例子:php根据命令行参数生成配置文件 ghostinit.php: <?php class ghostinit{ static $version = 'ghost ...

  7. Codeforces633G(SummerTrainingDay06-I dfs序+线段树+bitset)

    G. Yash And Trees time limit per test:4 seconds memory limit per test:512 megabytes input:standard i ...

  8. HDU3534(SummerTrainingDay13-C tree dp)

    Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  9. 背景平铺(兼容IE8)

    标准浏览器通过background-size属性设置;IE8以下通过滤镜实现. 代码如下: /* IE8 */ filter: progid:DXImageTransform.Microsoft.Al ...

  10. CentOS 7 镜像下载

    新版本系统镜像下载(当前最新是CentOS 7.4版本) CentOS官网 官网地址 http://isoredirect.centos.org/centos/7.4.1708/isos/x86_64 ...