Android开发使用RecyclerView添加点击事件实例详解
作者:leekey 发布时间:2022-04-30 14:11:55
标签:Android,RecyclerView,点击事件
引言
RecyclerView是在Android5.0版本作为support-v7的一个组件出现,高效替代了最初的ListView等列表组件。
使用上实现了视图代码解耦,功能上具备强大的item复用机制,并且提供默认多种LayoutMananger用来处理多种布局,本篇介绍给RecyclerView基本使用和添加点击事件。
添加RecyclerView
依赖
implementation 'androidx.recyclerview:recyclerview:1.1.0'
一、RecyclerView基本使用
1. 添加适配器Adapter
class NewsAdapter(private val newsList: List<NewsInfo>, ): RecyclerView.Adapter<NewsAdapter.ViewHolder>() {
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
// ViewHolder
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
// 绑定数据
}
override fun getItemCount(): Int {
return myList.size
}
}
2. 创建列表的每个项的item_layout.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_marginHorizontal="10dp"
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:text="title"
android:textSize="16sp"
android:textColor="#000000" />
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="200dp" />
<View
android:layout_width="match_parent"
android:layout_height="0.1dp"
android:layout_marginTop="10dp"
android:background="#d3d3d3" />
</LinearLayout>
3. 在activity中使用
// 设置LayoutManager,这里选用LinearLayoutManager线性布局作为示例
recyclerView.layoutManager = LinearLayoutManager(MyApplication.context)
// 创建适配器
val newsAdapter = NewsAdapter(newsList)
// 设置适配器
recyclerView.adapter = newsAdapter
二、RecyclerView点击事件详细步骤
1. 在RecyclerView对应的Adapter类里面新建接口
//创建OnItemClickListener接口
interface OnItemClickListener {
fun onItemClick(position: Int)
}
2. 在Adapter类里创建setOnItemClickListener方法
//声明一个mItemClickListener接口
private var mOnItemClickListener: OnItemClickListener? = null
//添加setOnItemClickListener方法
fun setOnItemClickListener(listener: OnItemClickListener?) {
mOnItemClickListener = listener
}
3. 在Adapter类的onBindViewHolder里给每个item设置回调
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
......
//给每个Item的点击事件设置回调
holder.itemView.setOnClickListener {
mOnItemClickListener?.onItemClick(position)
}
}
4. 在RecyclerView对应的Activity里添加点击事件
val adapter = YourAdapter(YourData) //适配器
adapter.setOnItemClickListener(object : YourAdapter.OnItemClickListener {
override fun onItemClick(position: Int) {
Toast.makeText(this@YourActivity, "You clicked No.${position} item.", Toast.LENGTH_SHORT).show()
}
})
总结
在
RecyclerView
对应的Adapter
类里面新建接口在
Adapter
类里创建setOnItemClickListener
方法在
Adapter
类的onBindViewHolder
里给每个item
设置回调在
RecyclerView
对应的Activity
里添加点击事件
来源:https://juejin.cn/post/7134989573238554638
0
投稿
猜你喜欢
- 本文实例讲述了Java matches类,Pattern类及matcher类用法。分享给大家供大家参考,具体如下:Pattern类正则表达式
- android root权限破解分析许多机友新购来的Android机器没有破解过Root权限,无法使用一些需要高权限的软件,以及进行一些高权
- 目录aop配合反射统一签名验证接口统一签名校验第一种aop 方式实现第二种 * aop配合反射统一签名验证直接上代码,作为记录。CheckS
- java 计算同比增长工具类为了数据的严谨性,统一装换为BigDecimal,话不多说,看代码。package com.pig4cloud.
- 本节我们主要介绍 Ribbon 的一些常用配置和配置 Ribbon 的两种方式。常用配置1. 禁用 Eureka当我们在 RestTempl
- 本文实例讲述了C#实现随机数产生类。分享给大家供大家参考。具体分析如下:这个类主要扩展的random的使用,对一个经常需要使用的随机数生成进
- 服务限流,是指通过控制请求的速率或次数来达到保护服务的目的,在微服务中,我们通常会将它和熔断、降级搭配在一起使用,来避免瞬时的大量请求对系统
- Spring和SpringMVC的容器具有父子关系,Spring容器为父容器,SpringMVC为子容器,子容器可以引用父容器中的Bean,
- 学习过java基础,最近趁着大量课余时间想学习Android开发。百度很多资料Android studio,由Google开发的开发工具,那
- 1.@RequestMapping注解1.1@RequestMapping注解的功能从注解名称上我们可以看到,@RequestMapping
- 记得在2013年12月的时候,有系列文章是介绍怎么开发一个智能手表的App,让用户可以在足球比赛中记录停表时间。随着Android Wear
- 程序员日常工作中,发送http请求特别常见。本文以Java为例,总结发送http请求的多种方式。1. HttpURLConnection使用
- Arrays 类提供了一个 fill() 方法,可以在指定位置进行数值填充。fill() 方法虽然可以填充数组,但是它的功能有限制,只能使用
- JSONArray删除元素的两种方式我自个磨出来的,难受JSONArray jsonarray = new JSONArray();Set&
- SpringBoot 中配置redis作为session 缓存器。 让shiro引用本文是建立在你是使用这shiro基础之上的补充内容第一种
- 目录基本查询延迟查询属性类型筛选复合from子句多级排序分组联合查询-join合并-zip()分区(分页)并行linq取消长时间运行的并行l
- 1.前言在java当中,若是进行比较,大家可能第一时间想到,==或是!=,这种数学上的比较符>、接下来,我就分别介绍并演示
- spring FactoryBean 是创建 复杂的bean,一般的bean 直接用xml配置即可,如果一个bean的创建过程中
- 使用Aspose.Cells创建和读取Excel文件,供大家参考,具体内容如下1. 创建ExcelAspose.Cells.License
- 详解java中接口与抽象类的区别1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是