引言
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
里添加点击事件
以上就是Android开发使用RecyclerView添加点击事件实例详解的详细内容,更多关于Android RecyclerView添加点击事件的资料请关注编程网其它相关文章!