原创文章。转载请注明 http://blog.csdn.net/leejizhou/article/details/50670657

RecyclerView是伴随Android 5.0公布的新控件,是一种列表容器,Google意在用新的RecyclerView来代替老旧的ListView和GridView,它的使用灵活性和性能都要优于ListView,接下来通过一系列文章来了解RecyclerView的各种用法,本篇来介绍它的初步使用,RecyclerView的“HelloWord“。

RecyclerView与传统ListView的差别:

1:ViewHolder模式,传统的ListView能够通过ViewHolder来提升列表滚动的性能,可是这不是必须的,由于ListView没有严格标准的设计模式,可是在使用RecyclerView的时候Adapter必须实现至少一个ViewHolder,由于它有着严格的ViewHolder设计模式。

2:显示效果。ListView仅仅能实现垂直的滚动列表视图。相反。RecyclerView能够通过设置RecyclerView.LayoutManager来定制不同风格的视图,比方水平滚动列表或者不规则的瀑布流列表。

3:列表项动画, 在ListView中没有提供不论什么方法或接口,方便开发人员实现Item的增删动画。RecyclerView能够通过设置的RecyclerView.ItemAnimator来为条目添加动画效果。

这篇博文以实现以下这个小Demo来了解RecyclerView的初步使用

*图片素材版权归属于Smartisan.com

1:依赖库 (本文以Android Studio作为开发工具)

Gradle配置
compile 'com.android.support:recyclerview-v7:23.1.1'

2:建立Layout。与ListView相似。在布局里面加入RecyclerView

<?

xml version="1.0" encoding="utf-8"?

>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/rv_list" /> </LinearLayout>

3:建立RecyclerView Item布局

<?

xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:id="@+id/cv_item" android:foreground="?

android:attr/selectableItemBackground"

card_view:cardCornerRadius="4dp" card_view:cardBackgroundColor="#795548" card_view:cardElevation="4dp" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <ImageView android:id="@+id/iv_pic" android:layout_width="match_parent" android:layout_height="200dp" android:layout_weight="1" /> <TextView android:id="@+id/tv_text" android:padding="20dp" android:textColor="#ffffff" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> </android.support.v7.widget.CardView>

这里使用了一个叫CardView的控件,继承自FrameLayout,它是Google提供的一个卡片式视图容器,能够非常方便的显示出具有阴影和圆角的卡片式布局。像这样

CardView跟RecyclerView一样使用前也须要进行导入

compile 'com.android.support:cardview-v7:23.1.1'

4:然后建立RecyclerView的Adapter

import android.content.Context;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;/*** Created by Lijizhou on 2016/2/3.*/
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.NormalViewHolder> {private LayoutInflater mLayoutInflater;private Context mContext;private String [] mTitle;private int [] mPic;public RecyclerViewAdapter(Context context,String[]title,int[] pic){mContext=context;mTitle=title;mPic=pic;mLayoutInflater=LayoutInflater.from(context);}//自己定义的ViewHolder,持有每一个Item的的全部界面元素public  static class NormalViewHolder extends RecyclerView.ViewHolder{TextView mTextView;CardView mCardView;ImageView mImageView;public NormalViewHolder(View itemView) {super(itemView);mTextView=(TextView)itemView.findViewById(R.id.tv_text);mCardView=(CardView)itemView.findViewById(R.id.cv_item);mImageView=(ImageView)itemView.findViewById(R.id.iv_pic);}}//在该方法中我们创建一个ViewHolder并返回。ViewHolder必须有一个带有View的构造函数。这个View就是我们Item的根布局,在这里我们使用自己定义Item的布局;@Overridepublic NormalViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {return new NormalViewHolder(mLayoutInflater.inflate(R.layout.item_view,parent,false));}//将数据与界面进行绑定的操作@Overridepublic void onBindViewHolder(NormalViewHolder holder, final int position) {holder.mTextView.setText(mTitle[position]);holder.mImageView.setBackgroundResource(mPic[position]);holder.mCardView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(mContext,mTitle[position],3000).show();}});}//获取数据的数量@Overridepublic int getItemCount() {return mTitle==null ? 0 : mTitle.length;}
}

5:RecycleViewActivity.java

public class RecycleViewActivity extends AppCompatActivity {private RecyclerView mRecyclerView;//item 显示所需private String[] title = {"Blog : http://blog.csdn.net/Leejizhou.","A good laugh and a long sleep are the best cures in the doctor's book.","all or nothing, now or never ","Be nice to people on the way up, because you'll need them on your way down.","Be confident with yourself and stop worrying what other people think. Do what's best for your future happiness!","Blessed is he whose fame does not outshine his truth.","Create good memories today, so that you can have a good past"};/*** 图片资源版权归属于Smartisan.com*/private int[] pic = {R.mipmap.aa1, R.mipmap.aa0, R.mipmap.aa2, R.mipmap.aa3, R.mipmap.aa4, R.mipmap.aa5, R.mipmap.aa6};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_recycle);mRecyclerView = (RecyclerView) findViewById(R.id.rv_list);// 创建一个线性布局管理器LinearLayoutManager layoutManager = new LinearLayoutManager(this);//设置垂直滚动。也能够设置横向滚动layoutManager.setOrientation(LinearLayoutManager.VERTICAL);//另外两种显示模式//  mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); Grid视图//  mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, OrientationHelper.VERTICAL)); 这里用线性宫格显示 相似于瀑布流//RecyclerView设置布局管理器mRecyclerView.setLayoutManager(layoutManager);//RecyclerView设置AdaptermRecyclerView.setAdapter(new RecyclerViewAdapter(this, title, pic));}}

这样RecyclerView系列的入门使用篇就介绍完了,本篇DEMO源代码下载地址:http://download.csdn.net/detail/leejizhou/9433651

RecyclerView的使用(1)之HelloWorld相关推荐

  1. Android零基础入门第65节:RecyclerView分割线开发技巧

    2019独角兽企业重金招聘Python工程师标准>>> 在上一期通过简单学习,已经领略到了RecyclerView的灵活性,当然都是一些最基础的用法,那么本期一起来学习Recycle ...

  2. Android零基础入门第64节:揭开RecyclerView庐山真面目

    大家还记得之前在第38期~第50期都在学习列表控件吗,其中用了8期讲ListView的使用,相信都已经掌握好了吧.那么本期一起来学习Android 5.X新增的一个列表组件,那就是RecyclerVi ...

  3. Android零基础入门第68节:完善RecyclerView,添加首尾视图

    2019独角兽企业重金招聘Python工程师标准>>> 在之前学习ListView的时候,有学习过如何给ListView添加列表头和列表尾.但是通过近几期的学习,发现Recycler ...

  4. android 表格控件点击事件,Android零基础入门|RecyclerView点击事件处理

    原标题:Android零基础入门|RecyclerView点击事件处理 前面两期学习了RecyclerView的简单使用,并为其item添加了分割线.在实际运用中,无论是List还是Grid效果,基本 ...

  5. Android Studio中的RecyclerView的使用方法实例分析

    RecyclerView的使用方法实例分析 话不多说直接上代码 主文件的布局文件,定义一个RecyclerView列表 <?xml version="1.0" encodin ...

  6. Android:RecyclerView简单理解和基本使用

    RecyclerView RecyclerView 一.RecyclerView 二.RecyclerView基本介绍: 三.RecyclerView基本实现: 参考 RecyclerView 一.R ...

  7. Docker安装Apache与运行简单的web服务——httpd helloworld

    Docker运行简单的web服务--httpd helloworld目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker运行简单的web ...

  8. CentOS Docker安装配置部署Golang web helloworld

    目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker部署Golang web helloworld 四.Docker与虚拟机的区别 五. ...

  9. 简单图文配置golang+vscode【win10/centos7+golang helloworld+解决install failed等情况】

    博客目录(阅读时间:10分钟) 一.win10 0.系统环境 1. win10配置golang环境 ①下载相关软件 ②创建gowork工作空间 ③配置环境变量(GOPATH+PATH) ④验证环境配置 ...

最新文章

  1. 利用Swoole同时更新多台服务器代码
  2. GCC中的内嵌汇编语言
  3. Linux C编程--进程介绍5--system函数
  4. ON_MESSAGE,ON_COMMAND和ON_NOTIFY的区别和联系
  5. 坚持是一件很难的事情
  6. Struts2教程9:实现自已的拦截器
  7. 《力学》课时三常见力和牛顿三定律
  8. react-redux草稿
  9. 蓝桥杯 基础练习 字母图形
  10. python文件拆分_python – 在几个文件中拆分views.py.
  11. 2022年,想自学java有没有一个详细的框架?
  12. 基于人机环境系统工程的智慧企业建设思考
  13. 爬取豆瓣电影排行榜top 250
  14. FlashFXP,flashfxp使用方法
  15. pycharm txt编辑器制表符与代码中\t不匹配
  16. 【linux】运维之LAMP
  17. 浣熊优化算法(COA)(含MATLAB代码)
  18. 网络安全:为大家介绍5种常见的加密算法
  19. windows下UHD安装教程
  20. hashcat 使用

热门文章

  1. 如何零基础学习python语言_零基础如何入门Python语言?有哪些学习建议?
  2. phpsso.php 注入漏洞,PHPCMS各种注入漏洞补丁
  3. python getostime_python中sys,os,time模块的使用(包括时间格式的各种转换)
  4. 病虫害模型算法_基于深度学习的目标检测算法综述
  5. js获取前后几天或者前后几个月的日期
  6. iOS传感器:实现一个随屏幕旋转的图片
  7. ORA-08002: sequence MySeq.currval is not yet defined in this session
  8. 你是否对它有一种责任感
  9. 2017年7个主要的金融行业数据趋势
  10. 你不知道的对称密钥与非对称密钥