Android开发使用RecyclerView添加点击事件实例详解
作者:leekey 时间:2022-04-30 14:11:55
引言
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
标签:Android,RecyclerView,点击事件
0
投稿
猜你喜欢
完美解决springboot中使用mybatis字段不能进行自动映射的问题
2023-07-27 00:41:35
简单讲解Java设计模式编程中的单一职责原则
2022-05-02 03:09:24
AQS加锁机制Synchronized相似点详解
2023-08-04 22:36:55
Struts2拦截器 关于解决登录的问题
2023-07-02 14:06:09
springboot中项目启动时实现初始化方法加载参数
2023-08-31 06:00:40
MyBatis-Plus 如何单元测试的实现
2022-03-02 19:45:08
解决IDEA service层跳转实现类的快捷图标消失问题
2022-09-03 06:38:00
Spring事务管理方法步骤解析
2021-12-15 20:09:04
C# Winform下载文件并显示进度条的实现代码
2022-11-26 04:39:02
详解JAVA中的OPTIONAL
2022-08-22 17:09:04
详解Spring-bean的循环依赖以及解决方式
2023-08-18 18:30:38
详解java中jvm虚拟机栈的作用
2022-06-06 14:08:44
Java实例讲解动态代理
2023-03-21 22:56:45
Java中使用Lambda表达式和函数编程示例
2022-05-06 03:30:40
深入理解Java设计模式之代理模式
2022-01-14 07:42:00
Spring Boot 实现配置文件加解密原理
2023-11-23 17:48:46
spring boot微服务场景下apollo加载过程解析
2022-05-20 13:55:32
Java8内存模型PermGen Metaspace实例解析
2023-11-25 10:53:36
Java中的泛型方法详解及简单实例
2023-09-11 13:28:05
C# 数独求解算法的实现
2022-04-04 18:48:57