介绍:
1.RecylerView是 support-v7 中的一个控件
2.该控件用于在有限的窗口中展示大量数据集, 例如: ListView、 GridView。
RecyclerView架构, 提供了一种插拔式的体验, 高度的解耦, 异常的灵活, 通过设置它提供的不同
LayoutManager, ItemDecoration , ItemAnimator实现令人瞠目的效果。
1>你想要控制其显示的方式, 请通过布局管理器LayoutManager
2>你想要控制Item间的间隔( 可绘制) , 请通过ItemDecoration
3>你想要控制Item增删的动画, 请通过ItemAnimator
4>事件得自己写, 官方没有响应的事件

还用到了菜单栏,就像微信添加好友那块儿的菜单栏
先在build.gradle(第二个)导入依赖
compile ‘com.android.support:recyclerview-v7:26.0.0-alpha1’
//如果依赖的版本是26,而你的版本不是26的,可以试着改为26

接下来是布局

activity_main.xml

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.example.ass.myapplication.MainActivity"><android.support.v7.widget.RecyclerViewandroid:id="@+id/recyclerView"android:layout_width="match_parent"android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>
</LinearLayout>

item.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><ImageView
        android:scaleType="centerCrop"android:id="@+id/image"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/a18"/><TextView
        android:id="@+id/content"android:layout_width="wrap_content"android:layout_height="30dp"android:gravity="center"android:text="测试"android:textSize="30dp"/>
</LinearLayout>

右上角菜单栏的布局
在菜单栏可以选择展示ListView,GridView,和瀑布流形式
menu_title.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"><itemandroid:id="@+id/one"android:title="ListView"app:showAsAction="never"></item><itemandroid:id="@+id/two"android:title="GridView"app:showAsAction="never"></item><itemandroid:id="@+id/three"android:title="瀑布流"app:showAsAction="never"></item>
</menu>

MainActivity

package com.example.ass.myapplication;import android.app.Activity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;import java.util.ArrayList;public class MainActivity extends Activity {private int[] imgId=new int[]{R.drawable.a18,R.drawable.axly,R.drawable.cat,R.drawable.nhs,R.drawable.yyjdf};private RecyclerView rv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取控件rv=(RecyclerView) findViewById(R.id.recyclerView);ArrayList<User> list = new ArrayList<>();//手动添加数据for (int i=0;i<100;i++){String conent = i + "林志玲";int img=imgId[i%imgId.length];User user = new User(img, conent);list.add(user);}//设置布局管理器rv.setLayoutManager(new LinearLayoutManager(MainActivity.this));//设置动画rv.setItemAnimator(new DefaultItemAnimator());//设置适配器final MyAdapter adapter = new MyAdapter(MainActivity.this, list);rv.setAdapter(adapter);//条目的点击事件adapter.setOnMyItemClickListener(new MyAdapter.MyItemClick() {@Overridepublic void itemClick(View view, int postion) {//吐司点击的条目的idToast.makeText(MainActivity.this,"---"+postion,Toast.LENGTH_SHORT).show();User user = new User(R.mipmap.ic_launcher, "hello 机器人");//增加条目//adapter.addUser(user,postion); //删除条目adapter.removeUser(postion);}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.item,menu);return true;}//菜单栏@Overridepublic boolean onOptionsItemSelected(MenuItem item) {int itemId=item.getItemId();switch (itemId) {case R.id.one://listView布局rv.setLayoutManager(new LinearLayoutManager(MainActivity.this));break;case R.id.two://gridview布局rv.setLayoutManager(new GridLayoutManager(MainActivity.this,2));break;case R.id.three://流失布局rv.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));break;}return super.onOptionsItemSelected(item);}
}

MyAdapter

package com.example.ass.myapplication;
import android.content.Context;
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 java.util.ArrayList;public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {private Context context;private ArrayList<User> list;private MyItemClick myItemClick;//监听器public MyAdapter(Context context, ArrayList<User> list) {this.context=context;this.list=list;}//创建ViewHolder的时候//实例化ViewHolder@Overridepublic MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {//条目布局View view = LayoutInflater.from(context).inflate(R.layout.item, null);//实例化ViewHolder ,将布局传入MyViewHolder viewHolder = new MyViewHolder(view);return viewHolder;}//当绑定ViewHolder的时候//给控件设置数据@Overridepublic void onBindViewHolder(final MyViewHolder holder, final int position) {holder.getTextView().setText(list.get(position).getContent());holder.getImageView().setImageResource(list.get(position).getImageId());//条目点击事件if(myItemClick!=null){holder.itemView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int i=holder.getLayoutPosition();//调用接口里面的方法myItemClick.itemClick(holder.itemView,i);}});}}//条目数量@Overridepublic int getItemCount() {return list.size();}//定义接口,实现条目点击事件public interface MyItemClick {void itemClick(View view,int postion);}public void setOnMyItemClickListener(MyItemClick myItemClick){this.myItemClick = myItemClick;}//添加数据public void addUser(User user,int position){list.add(position,user);//更新适配器notifyItemInserted(position);}//删除数据public void removeUser(int position){list.remove(position);//更新适配器notifyItemRemoved(position);}//ViewHolderclass MyViewHolder extends RecyclerView.ViewHolder{private ImageView imageView;private TextView textView;public MyViewHolder(View itemView) {super(itemView);this.imageView=itemView.findViewById(R.id.image);this.textView=itemView.findViewById(R.id.content);}//getter setter方法public ImageView getImageView(){return imageView;}public void setImageView(ImageView imageView) {this.imageView = imageView;}public TextView getTextView() {return textView;}public void setTextView(TextView textView) {this.textView = textView;}}
}

Bean类User

package com.example.ass.myapplication;public class User {private int imageId;private String content;public User() {}public User(int imageId, String content) {this.imageId = imageId;this.content = content;}public int getImageId() {return imageId;}public void setImageId(int imageId) {this.imageId = imageId;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}
}

Recyclerview的简介与使用相关推荐

  1. 【RecyclerView】 六、RecyclerView.ItemDecoration 条目装饰 ( 简介 | onDraw | onDrawOver | getItemOffsets )

    文章目录 一.RecyclerView.ItemDecoration 简介 1.onDraw() 方法 2.onDrawOver () 方法 3.getItemOffsets () 方法 二.Recy ...

  2. RecyclerView.ItemDecoration 间隔线

    内容已更新到:https://www.cnblogs.com/baiqiantao/p/19762fb101659e8f4c1cea53e7acb446.html 目录 一个通用分割线 ItemDec ...

  3. 使用RecyclerView实现列表展开动画

      昨天想起了公司前一段时间需要实现的一个动效,用listView实现列表item的展开动画.最后由于时间关系,只是实现了展开效果,但是展开的过程中是没有添加动画效果的,整个展开列表是由一种十分生硬的 ...

  4. 学习笔记:Recyclerview、SwipeRefreshLayout、Cardview的使用

    一.Recyclerview 1.简介 Recyclerview是Android 5.0新增的一个列表控件.顾名思义,recycler view,只负责回收和复用视图,高度的解耦,可灵活定制,轻松实现 ...

  5. RecyclerView使用探索1--了解及使用

    前言 目前的项目中,基本已经使用 RecyclerView 全面替换了ListView和GridView.确实,使用RecyclerView更加灵活,功能也更加强大. 最近也尝试把学习到的知识点花时间 ...

  6. 【RecyclerView】 十五、使用 ItemTouchHelper 实现 RecyclerView 拖动排序 ( ItemTouchHelper 简介 )

    文章目录 一.ItemTouchHelper 简介 二.RecyclerView 相关资料 一.ItemTouchHelper 简介 官方文档 : https://developer.android. ...

  7. 【RecyclerView】二、RecyclerView 简介 ( RecyclerView 特点 | RecyclerView 涉及到的类 )

    文章目录 一.RecyclerView 简介 二.RecyclerView 特点 三.RecyclerView 涉及到的类 四.RecyclerView 相关资料 一.RecyclerView 简介 ...

  8. [Android] DiffUtil在RecyclerView中的使用详解

    概述 DiffUtil是recyclerview support library v7 24.2.0版本中新增的类,根据Google官方文档的介绍,DiffUtil的作用是比较两个数据列表并能计算出一 ...

  9. 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)...

    转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...

最新文章

  1. 拉普拉斯矩阵(Laplace Matrix)与瑞利熵(Rayleigh quotient)
  2. 通过正则表达式分句提取中文内容
  3. linux下编译ios,为iOS安装OpenCV
  4. Linux下那些查找命令
  5. linux命令切换tty
  6. 类型全部为string_TypeScript 高级类型总结(含代码案例)
  7. Flex RIA的ArcIMS WebGIS之路(一)--胸中的那棵竹
  8. 为什么 MapReduce 再次流行起来了?
  9. 有趣的算法(八):3分钟看懂选择排序(C语言实现)
  10. could not get jdbc connection mysql_Could not get JDBC Connection异常问题
  11. 数据仓库分层及模型设计
  12. 75道逻辑思维题及答案--计算机面试大全
  13. linux忘记root密码,单用户模式修改密码
  14. Linux挂载(增加一块新硬盘)
  15. php 模板渲染,ThinkPHP6.0模板渲染 - ThinkPHP6.0快速开发手册(案例版) - php中文网手册...
  16. 智能网关CE证书和SAA认证,CB认证。
  17. macbook android 屏幕共享,苹果设备小技巧:iPhone,iPad,Mac进行屏幕共享和远程控制...
  18. 股票融资全面解决方案
  19. 访客wifi隔离实现
  20. CCKS2020事理图谱应用工作:刘焕勇等.面向开放文本的逻辑推理知识抽取与事件影响推理探索

热门文章

  1. 计算机组成原理题库(唐朔飞)
  2. 用PS制作简单的文字人像海报
  3. mysql是一门编程语言吗_掌握一门编程语言对非程序员的工作和生活有多大好处?...
  4. Linux防火墙常用命令
  5. Cris 小哥哥的大数据项目之 HBase 模拟微博核心功能
  6. vue 在 html标签上 做三元运算
  7. php 连接mysql连接被重置的解决方法
  8. 什么是亚马逊kyc审核?
  9. 超级牛批的IP地址查询工具
  10. 特征多项式、代数重数与几何重数