将替代ListView的RecyclerView 的使用(一)
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 的使用(一)相关推荐
- android listview替代,Android笔记——RecyclerView替代ListView
ListView是常用列表控件,但设置Adapter时自定义代码较为复杂,因此Android3.0后,增加RecyclerView替代ListView RecyclerView没有提供OnItemCl ...
- [Android]使用RecyclerView替代ListView(四:SeizeRecyclerView)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6641794.html [Android]使用RecyclerV ...
- Android 性能优化lt;九 RecyclerView替代Listview用法
Android 性能优化 (一)APK高效瘦身 http://blog.csdn.net/whb20081815/article/details/70140063 Android 性能优化 (二)数据 ...
- 安卓v7支持包下的ListView替代品————RecyclerView
RecyclerView这个控件也出来很久了,相信大家也学习的差不多了,如果还没学习的,或许我可以带领大家体验一把这个艺术般的控件. 项目已经同步至github:https://github.com/ ...
- Android 5.0学习之ListView升级版RecyclerView
前言 大家都知道ListView在我们开发中很常用,Android5.0的到来,它给我们带来了一个替代 ListView的新的控件,也可以说是ListView的升级版,那就是RecyclerVi ...
- Android入门(九)| 滚动控件 ListView 与 RecyclerView
文章目录 ListView 内置类型的简单运用 定制数据类型 提升效率 点击事件 RecyclerView 布局管理器 点击事件 ListView 内置类型的简单运用 由于手机屏幕空间有限,能够一次性 ...
- 【Android】ListView、RecyclerView、ScrollView里嵌套ListView 相对优雅的解决方案:NestFullListView
一 背景概述: ScrollView里嵌套ListView,一直是Android开发者(反正至少是我们组)最讨厌的设计之一,完美打破ListView(RecyclerView)的复用机制,成功的将Na ...
- 【腾讯Bugly干货分享】Android ListView与RecyclerView对比浅析--缓存机制
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5811d... 作者:黄宁源 一,背景 RecyclerView是谷歌官方出的一 ...
- ListView嵌套RecyclerView遇到的一些坑以及解决办法
首先看下需求 要实现这个页面首先 我想到的是ListView嵌套RecyclerView,那么开动
最新文章
- php yii没有数据库吗,php – YII活动记录未插入数据库但未给出错误
- 解决tensorflow报错:AttributeError: module ‘tensorflow.keras.backend‘ has no attribute ‘get_session‘ 问题
- 【opencv】10.播放视频 以及 设置任意键为暂停键
- Echarts实例中json数据查找
- 【vue】跟着老马学习vue-数据双向绑定
- linux环境下最简单的C语言例子
- jsp导入jstl标签库_EE JSP:使用JSTL标记库生成动态内容
- miui12怎么自定义开机动画_MIUI12相机特色功能须知,新增魔法分身与相机上滑启动更多模式...
- 内网分享文件html源码,vue项目分享html页面(服务器只能内网访问)
- ATK-ESP8266 串口转WIFI模块 简历
- Win10 Ubuntu 制作多系统U盘
- 数据库之Oracle笔试面试题收集(来自网络)
- python常用的颜色英文表达_python 中颜色的表示
- PG 锁类型、级别、死锁解决
- 不可不知的安卓屏幕知识
- Node.js:knex.js数据库MySQL query builder
- java项目中数据查询慢问题
- XSS是什么?(Xmind配文详解)
- lopatkin俄大神精简Windows 10 Pro 18363.1049 19H2 Release x86-x64 ZH-CN DREY[2020-08-30]
- 那些年,你看过有哪些让你记忆犹新的书
热门文章
- The Triangle
- 【Linux系统编程】Linux线程浅析
- 【Protocol Buffer】Protocol Buffer入门教程(七):导入定义
- 【Linux】一步一步学Linux——id命令(94)
- python字典进行大写转化_python之字典的增删改查
- 低配置系统安装 linux,Linux系统的安装和配置
- java ssm使用存储过程_java调用oracle存储过程(ssm)
- 计算机三级交换机允许中继配置,计算机三级交换机配置命令总结
- 1载波把32个信道按_OFDM技术:相比FDM提高频带利用率,子载波间隔可以随意选取吗?...
- 翻转字符串里的单词—leetcode151