版权声明:本文为博主原创文章,未经博主同意不得转载。 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

  <RelativeLayoutxmlns: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.RecyclerViewandroid: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;}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i){// 创建一个View,简单起见直接使用系统提供的布局。就是一个TextViewView view = View.inflate(viewGroup.getContext(), android.R.layout.simple_list_item_1, null);// 创建一个ViewHolderViewHolder holder = new ViewHolder(view);return holder;}@Overridepublic void onBindViewHolder(ViewHolder viewHolder, int i){// 绑定数据到ViewHolder上viewHolder.mTextView.setText(mDataset);}@Overridepublic 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 的特性还有非常多。 下一篇文章再继续探索,未完待续

转载于:https://www.cnblogs.com/mqxnongmin/p/10721303.html

将替代ListView的RecyclerView 的使用(一)相关推荐

  1. android listview替代,Android笔记——RecyclerView替代ListView

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

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

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6641794.html [Android]使用RecyclerV ...

  3. Android 性能优化lt;九 RecyclerView替代Listview用法

    Android 性能优化 (一)APK高效瘦身 http://blog.csdn.net/whb20081815/article/details/70140063 Android 性能优化 (二)数据 ...

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

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

  5. Android 5.0学习之ListView升级版RecyclerView

     前言 大家都知道ListView在我们开发中很常用,Android5.0的到来,它给我们带来了一个替代 ListView的新的控件,也可以说是ListView的升级版,那就是RecyclerVi ...

  6. Android入门(九)| 滚动控件 ListView 与 RecyclerView

    文章目录 ListView 内置类型的简单运用 定制数据类型 提升效率 点击事件 RecyclerView 布局管理器 点击事件 ListView 内置类型的简单运用 由于手机屏幕空间有限,能够一次性 ...

  7. 【Android】ListView、RecyclerView、ScrollView里嵌套ListView 相对优雅的解决方案:NestFullListView

    一 背景概述: ScrollView里嵌套ListView,一直是Android开发者(反正至少是我们组)最讨厌的设计之一,完美打破ListView(RecyclerView)的复用机制,成功的将Na ...

  8. 【腾讯Bugly干货分享】Android ListView与RecyclerView对比浅析--缓存机制

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5811d... 作者:黄宁源 一,背景 RecyclerView是谷歌官方出的一 ...

  9. ListView嵌套RecyclerView遇到的一些坑以及解决办法

    首先看下需求 要实现这个页面首先 我想到的是ListView嵌套RecyclerView,那么开动

最新文章

  1. php yii没有数据库吗,php – YII活动记录未插入数据库但未给出错误
  2. 解决tensorflow报错:AttributeError: module ‘tensorflow.keras.backend‘ has no attribute ‘get_session‘ 问题
  3. 【opencv】10.播放视频 以及 设置任意键为暂停键
  4. Echarts实例中json数据查找
  5. 【vue】跟着老马学习vue-数据双向绑定
  6. linux环境下最简单的C语言例子
  7. jsp导入jstl标签库_EE JSP:使用JSTL标记库生成动态内容
  8. miui12怎么自定义开机动画_MIUI12相机特色功能须知,新增魔法分身与相机上滑启动更多模式...
  9. 内网分享文件html源码,vue项目分享html页面(服务器只能内网访问)
  10. ATK-ESP8266 串口转WIFI模块 简历
  11. Win10 Ubuntu 制作多系统U盘
  12. 数据库之Oracle笔试面试题收集(来自网络)
  13. python常用的颜色英文表达_python 中颜色的表示
  14. PG 锁类型、级别、死锁解决
  15. 不可不知的安卓屏幕知识
  16. Node.js:knex.js数据库MySQL query builder
  17. java项目中数据查询慢问题
  18. XSS是什么?(Xmind配文详解)
  19. lopatkin俄大神精简Windows 10 Pro 18363.1049 19H2 Release x86-x64 ZH-CN DREY[2020-08-30]
  20. 那些年,你看过有哪些让你记忆犹新的书

热门文章

  1. The Triangle
  2. 【Linux系统编程】Linux线程浅析
  3. 【Protocol Buffer】Protocol Buffer入门教程(七):导入定义
  4. 【Linux】一步一步学Linux——id命令(94)
  5. python字典进行大写转化_python之字典的增删改查
  6. 低配置系统安装 linux,Linux系统的安装和配置
  7. java ssm使用存储过程_java调用oracle存储过程(ssm)
  8. 计算机三级交换机允许中继配置,计算机三级交换机配置命令总结
  9. 1载波把32个信道按_OFDM技术:相比FDM提高频带利用率,子载波间隔可以随意选取吗?...
  10. 翻转字符串里的单词—leetcode151