简单介绍

RecylerView能够灵活地实现大数据集的展示,视图的复用管理比ListView更好,能够显示列表,网格,瀑布流等形式,且不同的ViewHolder能够实现item多元化的功能.

使用准备,添加依赖

implementation 'androidx.recyclerview:recyclerview:1.1.0'

下列例子所有依赖

dependencies {implementation 'androidx.appcompat:appcompat:1.2.0'implementation 'com.google.android.material:material:1.3.0'implementation 'androidx.constraintlayout:constraintlayout:2.0.4'testImplementation 'junit:junit:4.+'androidTestImplementation 'androidx.test.ext:junit:1.1.2'androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'implementation 'androidx.recyclerview:recyclerview:1.1.0'
}

RecyclerView 的简单使用

一:RecyclerView 的初始化

        recyclerView = findViewById(R.id.recycler1);recyclerView.setLayoutManager(new LinearLayoutManager(LinearRecycleActivity.this));//recyclerView.setAdapter(new CLinearAdapter(LinearRecycleActivity.this));简单使用recyclerView.setAdapter(new CLinearAdapter(LinearRecycleActivity.this, new CLinearAdapter.onItemClickListener() {@Overridepublic void click(int pos) {Toast.makeText(LinearRecycleActivity.this,"InActivity cilik is "+pos,Toast.LENGTH_SHORT).show();}}));//这里嵌入了一个lambda表达式,用于实现监听功能//xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns: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"tools:context=".MainActivity"android:padding="50dp"><Buttonandroid:id="@+id/btn_toListView"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="toListView"android:textAllCaps="false"/></LinearLayout>
  • 二:RecyclerView 的 Adapter

public class CLinearAdapter extends RecyclerView.Adapter <CLinearAdapter.LinearViewHolder>{private Context context;private onItemClickListener listener;CLinearAdapter(Context context,onItemClickListener listener){this.context = context;this.listener = listener;}@Overridepublic CLinearAdapter.LinearViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {LinearViewHolder linearViewHolder = new LinearViewHolder(LayoutInflater.from(context).inflate(R.layout.linear_item,parent,false));return linearViewHolder;}@Overridepublic void onBindViewHolder(@NonNull CLinearAdapter.LinearViewHolder holder, int position) {//设置itemholder.textView.setText("onBindViewHolder");holder.itemView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//点击事件// Toast.makeText(context,"inAdapter onClick is "+position,Toast.LENGTH_SHORT).show();listener.click(position);}});}@Overridepublic int getItemCount() {return 20;}//设置item的个数class LinearViewHolder extends RecyclerView.ViewHolder{//item的样式TextView textView;public LinearViewHolder(@NonNull View itemView) {super(itemView);textView = itemView.findViewById(R.id.linear_text);}}public interface  onItemClickListener{//给外部的接口,以实现点击事件void click(int pos);}
}//xml
<?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="wrap_content"android:padding="10dp"android:background="#ffffff"><TextViewandroid:gravity="center"android:text="hello"android:id="@+id/linear_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="25dp" /></LinearLayout>
这里体现了一个RecyclerView 和 ListView的不同点:在ListView中,可以直接调用监听事件,但RecyclerView需要自己去定义实现监听
  • 二:设为水平滚动

public class HorRecyleActivity extends AppCompatActivity {private RecyclerView recyclerView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_hor);recyclerView = findViewById(R.id.recycler_hor);LinearLayoutManager linearLayoutManager = new LinearLayoutManager(HorRecyleActivity.this);linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);recyclerView.setLayoutManager(linearLayoutManager);recyclerView.setAdapter(new CLinearAdapter(HorRecyleActivity.this, new CLinearAdapter.onItemClickListener() {@Overridepublic void click(int pos) {Toast.makeText(HorRecyleActivity.this,"InActivity cilik is "+pos,Toast.LENGTH_SHORT).show();}}));}}
  • 三:item设为网格布局

public class GridRecyleActivity extends AppCompatActivity {private RecyclerView recyclerView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_grid_recyle);recyclerView = findViewById(R.id.recycler_grid);recyclerView.setLayoutManager(new GridLayoutManager(GridRecyleActivity.this,5));//一行5个recyclerView.setAdapter(new CLinearAdapter(GridRecyleActivity.this, new CLinearAdapter.onItemClickListener() {@Overridepublic void click(int pos) {Toast.makeText(GridRecyleActivity.this,"InActivity cilik is "+pos,Toast.LENGTH_SHORT).show();}}));}
}
  • 四:RecyclerView扩展:瀑布流

public class FallRecyleActivity2 extends AppCompatActivity {private RecyclerView recyclerView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_fall_recyle2);recyclerView = findViewById(R.id.recycler_fall);recyclerView.setLayoutManager(new StaggeredGridLayoutManager(5,StaggeredGridLayoutManager.VERTICAL));//5列recyclerView.setAdapter(new CLinearAdapter(FallRecyleActivity2.this, new CLinearAdapter.onItemClickListener() {@Overridepublic void click(int pos) {Toast.makeText(FallRecyleActivity2.this,"InActivity cilik is "+pos,Toast.LENGTH_SHORT).show();}}));}
}
//Adpater继承的对象不同
public class StaggerdAdapter extends RecyclerView.Adapter <StaggerdAdapter.LinearViewHolder>{
  • 五:多种viewHolder

public class CLinearAdapter extends RecyclerView.Adapter <RecyclerView.ViewHolder>{private Context context;private onItemClickListener listener;CLinearAdapter(Context context,onItemClickListener listener){this.context = context;this.listener = listener;}@Overridepublic int getItemViewType(int position){return  position&1;}@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {if(viewType==1) {LinearViewHolder linearViewHolder = new LinearViewHolder(LayoutInflater.from(context).inflate(R.layout.linear_item,parent,false));return linearViewHolder;}else {LinearViewHolder2 linearViewHolder = new LinearViewHolder2(LayoutInflater.from(context).inflate(R.layout.linear2_item,parent,false));return linearViewHolder;}}@Overridepublic void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder,final int position) {//设置itemif(getItemViewType(position)==1){((LinearViewHolder)holder).textView.setText("onBindViewHolder1");}else{((LinearViewHolder2)holder).textView.setText("onBindViewHolder2");}holder.itemView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//点击事件// Toast.makeText(context,"inAdapter onClick is "+position,Toast.LENGTH_SHORT).show();listener.click(position);}});}@Overridepublic int getItemCount() {return 20;}//设置item的个数class LinearViewHolder extends RecyclerView.ViewHolder{//item的样式TextView textView;public LinearViewHolder(@NonNull View itemView) {super(itemView);textView = itemView.findViewById(R.id.linear_text);}}class LinearViewHolder2 extends RecyclerView.ViewHolder{//item的样式TextView textView;public LinearViewHolder2(@NonNull View itemView) {super(itemView);textView = itemView.findViewById(R.id.linear_text2);}}public interface  onItemClickListener{//给外部的接口void click(int pos);}}

RecylerView的介绍与简单应用相关推荐

  1. Matplotlib的介绍及简单操作

    Matplotlib的介绍及简单操作 1 什么是Matplotlib 是专门用于开发2D图表(包括3D图表) 以渐进.交互式方式实现数据可视化 2 为什么要学习Matplotlib 可视化是在整个数据 ...

  2. (三)AJAX基本介绍和简单实例03

    (三)AJAX基本介绍和简单实例03-----Ajax与数据库的动态应用 前台显示界面: 选择所有客户之后: 选择其中一个客户---杜森: Demo03.html代码 <html> < ...

  3. rabbitMQ消息队列 – 面板介绍及简单demo

    首先rabbit安装好之后,运维会给一个控制面板. 默认账号密码为guest 登入以后可以看到具体界面. 在此鸣谢百度翻译给予的大力支持.. ###写一个简单的demo 编写之前..虽然说可以直接用底 ...

  4. Protobuf介绍及简单使用(上)

    目录 Protobuf 介绍 优势 protobuf语法 Specifying Field Rules Data type Data name Number Protobuf注释 保留字段与标识符 s ...

  5. SQL Server中追踪器Trace的介绍和简单使用

    原文:SQL Server中追踪器Trace的介绍和简单使用 一.What is Trace? 对于SQL Profiler这个工具相信大家都不是很陌生,没用过的朋友可以在SQL Server Man ...

  6. S3C2440移植linux3.4.2内核之内核框架介绍及简单修改

    文章目录 uboot启动内核分析 简单配置内核 编译内核 设置机器ID 修改晶振 移植Linux3.4.2内核其他文章链接: S3C2440移植linux3.4.2内核之内核框架介绍及简单修改 S3C ...

  7. 新颖的自我介绍_简单新颖的自我介绍范文

    简单新颖的自我介绍范文 简单新颖的自我介绍范文1 各位考官好,今天能够站在这里参加面试,有机会向各位考官请教和学习,我感到非常的荣幸.希望通过这次面试能够把自己展示给大家,希望大家记住我.我叫.... ...

  8. Quartz框架实现定时任务介绍及简单使用

    https://blog.csdn.net/bicheng4769/article/details/81097305 Quartz框架介绍及简单使用 https://www.cnblogs.com/d ...

  9. Hive第一天——Hive介绍以及简单使用

    Hive第二天--Hive介绍以及简单使用 自己的话:黑发不知勤学早,白首方悔读书迟 每天都要保持前进! 一.什么是Hive 数据库: mysql.oracle.sqlserver.DB2.sqlit ...

最新文章

  1. strust2自定义interceptor的基本方法及操作
  2. 无缝衔接的人会遭报应吗_还为幼小衔接发愁吗?学会4招,孩子养成好习惯,与小学无缝对接...
  3. 3.JAVA中的多态
  4. 来不及想标题了,我要去打包收藏了 | 本周值得读
  5. boost::gil::is_planar用法的测试程序
  6. QQ红包源码 大转盘抽奖源码下载 微信红包源码
  7. 试用版SQL Server 2008提示评估期已过 解决办法
  8. c语言单链表原地转置,不带头结点的单链表的插入,删除,原地转置,判断空,清空,统计节点数目等操作...
  9. mongodb简单安装
  10. 【算法很美】递归、查找、排序 (下)
  11. MySQL之索引及其背后的数据结构
  12. 官方免费的正版Xshell,人人都可以马上拥有
  13. Mybatisplus语句变成下划线_解决方法
  14. Linux-重命名命令rename
  15. Eclipse中文语言包安装和设置中文
  16. 程序员年薪30万,却被丈母娘果断拒绝!网友:就不能一起奋斗吗
  17. 操作系统读写者问题实验报告_什么是操作系统?
  18. 日更100天(5)每天进步一点点
  19. 了解固件(Firmware)和驱动(Driver)
  20. P2495 [SDOI2011]消耗战-虚树+树形dp

热门文章

  1. 出圈的盼盼,失去了年轻人
  2. 开学了,复旦老师教你如何玩转“0”“1”浪漫!| 人物志
  3. 最新kali之ncrack
  4. Android 全局手势识别原理
  5. 关键词权重推送,权重推送接口,权重推送是什么,关键词权重推送的接口,手淘足迹接口,直通车接口,卡首屏升级版,打标和权重推送的区别
  6. sso单点登录的补充网关鉴权
  7. linux如何查询进程ID和关闭进程
  8. TrueNAS和NextCloud搭建公司内部文件服务器
  9. 值得一用的Windows磁盘空间分析工具——WizTree
  10. [AMBA]AHB总线协议简介