如何使用

1.build.gradle中添加该类

compile 'com.android.support:recyclerview-v7:28.0.0'

2.视图层中定义RecyclerView

android:id="@+id/rv"

android:layout_width="match_parent"

android:layout_height="match_parent">

3.绑定RecyclerView

RecyclerView rv = findViewById(R.id.rv);

RvAdapter rvAdapter = new RvAdapter(list);

rv.setAdapter(rvAdapter);

// rv.setLayoutManager(new GridLayoutManager(this,4));

rv.setLayoutManager(new

LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));

RecyclerView中有两个必须的设置,setLayoutManager()和setAdapter.

LayoutManager有两种,GridLayoutManager,LinearLayoutManager.

GridLayoutManager使用了2个参数的构造;GridLayoutManager(Context context, int spanCount)

context :上下文

spancout: 每行显示的数量。

LinearLayoutManager使用了3个参数的构造,LinearLayoutManager(Context context, int orientation, boolean reverseLayout)。

context:上下文

orientation:方向,垂直还是水平

reverseLayout:是否倒置,true为倒置

定义Adapter之前创建子视图

activity_item

xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

android:layout_height="wrap_content">

android:layout_width="match_parent"

android:layout_height="200dp"

android:background="@drawable/border"

>

android:layout_width="100dp"

android:layout_height="100dp"

android:layout_gravity="center"

android:src="@mipmap/ic_launcher"

/>

android:layout_width="250dp"

android:layout_height="100dp"

android:layout_gravity="center"

android:gravity="center"

android:id="@+id/rv_text"

android:background="@drawable/border_blue"

/>

4.定义Adapter

public class RvAdapter extends RecyclerView.Adapter {

private List list;

private MyClickListener myClickListener;

public void setMyClickListener(MyClickListener myClickListener) {

this.myClickListener=myClickListener;

}

public RvAdapter(List list) {

this.list=list;

}

@NonNull

@Override

public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

//绑定子视图

View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.activity_item, viewGroup, false);

MyViewHolder myViewHolder=new MyViewHolder(view);

return myViewHolder;

}

@Override

public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int i) {

TextView textView =myViewHolder.itemView.findViewById(R.id.rv_text);

textView.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

myClickListener.setTextClickListener(i);

}

});

textView.setText(list.get(i));

myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

myClickListener.setOnClickListener(i);

}

});

myViewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() {

@Override

public boolean onLongClick(View v) {

myClickListener.setOnLongClickListener(i);

return false;

}

});

}

@Override

public int getItemCount() {

return list.size();

}

//定义视图管理器

class MyViewHolder extends RecyclerView.ViewHolder {

public MyViewHolder(@NonNull View itemView) {

super(itemView);

}

}

//事件监听

public interface MyClickListener{

void setOnClickListener(int i);

void setOnLongClickListener(int i);

void setTextClickListener(int i);

}

}

Adapter中重写了三个方法

onCreateViewHolder:用来获取子视图控制器,MyViewHolder继承RecyclerView.ViewHolder类。

onBindViewHolder:用来获取子视图里的控件,第二个参数表示第几个item。

getItemCount():表示页面需要显示的item数量。

RecyclerView只有item的点击事件没有长按事件,使用事件监听给外部暴露长按事件。

rvAdapter.setMyClickListener(new RvAdapter.MyClickListener() {

@Override

public void setOnClickListener(int i) {

Toast.makeText(MainActivity.this,"点击了第 "+ i +"个",Toast.LENGTH_SHORT).show();

}

@Override

public void setOnLongClickListener(int i) {

Toast.makeText(MainActivity.this,"长按了第 "+ i +"个",Toast.LENGTH_SHORT).show();

}

@Override

public void setTextClickListener(int i) {

Toast.makeText(MainActivity.this,"点击了第 "+ i +"个text",Toast.LENGTH_SHORT).show();

}

});

5.效果

效果.gif

android recyclerview gradle,Android RecyclerView 的简单使用相关推荐

  1. Android 第二十一课 RecyclerView简单的应用之编写“精美”的聊天页面

    1.由于我们会使用到RecyclerView,因此首先需要在app/build.gradle当中添加依赖库.如下: apply plugin: 'com.android.application' .. ...

  2. android 日程安排view,RecyclerView 列表控件中简单实现时间线

    时间 时间,时间,时间啊:走慢一点吧- 看见很多软件中都有时间线的东西,貌似天气啊,旅游啊什么的最多了:具体实现方式很多,在本篇文章中讲解一种自定义View封装的方式. 效果 先来看看效果. 分析 软 ...

  3. android 5.0+原生质设计,cardview、Recyclerview、百分比布局PercentRelativeLayout简单使用

    Android 5.0出来已经快一年时间了,全新的系统采用Material Design设计,耳目一新的感觉,当然新系统的出来也增加了新的API为开发带来便捷,现在就说说新出的几个控件,cardvie ...

  4. Android控件知识点-RecyclerView(全网最详解)

    背景:笔者在开发Android 蓝牙通信,需要搜索蓝牙设备并且动态显示,这个时候就需要选取适合的相关视图控件了,最后兜兜转转还是觉得RecyclerView好用一些,本人也是在开发的过程中,搜索了很多 ...

  5. android view嵌套,Android RecyclerView嵌套RecyclerView点击事件

    RecyclerView嵌套RecyclerView点击事件遇到取值错乱的问题 其实问题根本就是咱们没有处理好被嵌套的那层recycleview的position 那么解决思路也很简单,想办法把被嵌套 ...

  6. AndroidStudio中提示:Didn‘t find class “android.support.v7.widget.RecyclerView“

    场景 在Android Studio中使用Recycle View时提示: Didn't find class "android.support.v7.widget.RecyclerView ...

  7. Android Studio中引入RecyclerView的v7包

    本文转载自[http://blog.csdn.net/a10615/article/details/51268022] 一直知道RecyclerView可以代替ListView.GridView使用, ...

  8. android n等分 layout,RecyclerView GridLayoutManager 等分间距

    RecyclerView 表格实现 RecyclerView 配合GridLayoutManager 可以实现类似表格的样式,为了实现均分,adapter 的布局宽度改为匹配父元素,即 android ...

  9. Android view.settran,Android RecyclerView从入门到玩坏

    目录 前言 基础使用 分隔线 点击监听 搭配CardView 更丰富的条目 增删条目 快速添加视图 让RecyclerView支持复杂视图 最后前言 RecyclerView在Android界面开发当 ...

最新文章

  1. Echarts词云图
  2. 以数据为核心的SOC3.0时代到来
  3. AV1生态系统更新:2019年6月
  4. 博客园中的源代码格式显示
  5. oracle参数文件和口令文件
  6. vins 解读_VINS 中的 IMU 预积分推导和代码解读
  7. password php,password.php
  8. ZXing条码扫描----竖屏解决方案
  9. 物理计算机技术研究生就业前景,物理学就业前景
  10. Java集合、泛型和枚举
  11. 国内外游戏运营模式区别
  12. 微信网页授权关于state
  13. 智能点餐mysql框架图_SpringBoot微信点餐系统--P3数据库设计
  14. 使用Minisforum UM560小主机办公一周体验
  15. 恢复误删excel工作薄中的表格
  16. 搜索引擎蜘蛛的基本原理及工作流程
  17. SpringMVC小白问题一之启动时配置应用程序监听器错误
  18. Python 当前时间是那一年第几周的周几
  19. 免费数据 | CnOpenData空气质量站点监测数据
  20. 在人工智能的角逐中,仿真数据是重要的平衡力量吗?

热门文章

  1. directly test Gateway frontend service in AG3 SICF
  2. npm install的代理问题
  3. SAP S/4HANA里KPI tile的一个具体例子
  4. 如何用SAP ABAP编程语言实现一个简单的区块链模型
  5. 杨辉三角Python解法
  6. conda常用命令汇总
  7. Spark On Yarn 运行模式(详细)
  8. 配置中文_《洛克人Zero/ZX遗产合集》PC配置公布 支持中文
  9. linux ucontext 类型,协程:posix::ucontext用户级线程实现原理分析 | WalkerTalking
  10. pkl格式数据 训练集_Detectron2训练自己的数据集手把手指导