Android開發(fā)使用RecyclerView添加點(diǎn)擊事件實(shí)例詳解
引言
RecyclerView是在Android5.0版本作為support-v7的一個(gè)組件出現(xiàn),高效替代了最初的ListView等列表組件。
使用上實(shí)現(xiàn)了視圖代碼解耦,功能上具備強(qiáng)大的item復(fù)用機(jī)制,并且提供默認(rèn)多種LayoutMananger用來處理多種布局,本篇介紹給RecyclerView基本使用和添加點(diǎn)擊事件。
添加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) {
// 綁定數(shù)據(jù)
}
override fun getItemCount(): Int {
return myList.size
}
}
2. 創(chuàng)建列表的每個(gè)項(xiàng)的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中使用
// 設(shè)置LayoutManager,這里選用LinearLayoutManager線性布局作為示例
recyclerView.layoutManager = LinearLayoutManager(MyApplication.context)
// 創(chuàng)建適配器
val newsAdapter = NewsAdapter(newsList)
// 設(shè)置適配器
recyclerView.adapter = newsAdapter
二、RecyclerView點(diǎn)擊事件詳細(xì)步驟
1. 在RecyclerView對應(yīng)的Adapter類里面新建接口
//創(chuàng)建OnItemClickListener接口
interface OnItemClickListener {
fun onItemClick(position: Int)
}
2. 在Adapter類里創(chuàng)建setOnItemClickListener方法
//聲明一個(gè)mItemClickListener接口
private var mOnItemClickListener: OnItemClickListener? = null
//添加setOnItemClickListener方法
fun setOnItemClickListener(listener: OnItemClickListener?) {
mOnItemClickListener = listener
}
3. 在Adapter類的onBindViewHolder里給每個(gè)item設(shè)置回調(diào)
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
......
//給每個(gè)Item的點(diǎn)擊事件設(shè)置回調(diào)
holder.itemView.setOnClickListener {
mOnItemClickListener?.onItemClick(position)
}
}
4. 在RecyclerView對應(yīng)的Activity里添加點(diǎn)擊事件
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()
}
})
總結(jié)
- 在
RecyclerView對應(yīng)的Adapter類里面新建接口 - 在
Adapter類里創(chuàng)建setOnItemClickListener方法 - 在
Adapter類的onBindViewHolder里給每個(gè)item設(shè)置回調(diào) - 在
RecyclerView對應(yīng)的Activity里添加點(diǎn)擊事件
以上就是Android開發(fā)使用RecyclerView添加點(diǎn)擊事件實(shí)例詳解的詳細(xì)內(nèi)容,更多關(guān)于Android RecyclerView添加點(diǎn)擊事件的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android編程實(shí)現(xiàn)隱藏狀態(tài)欄及測試Activity是否活動(dòng)的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)隱藏狀態(tài)欄及測試Activity是否活動(dòng)的方法,涉及Android界面布局設(shè)置及Activity狀態(tài)操作的相關(guān)技巧,需要的朋友可以參考下2016-10-10
Android編程實(shí)現(xiàn)項(xiàng)目中異常捕獲及對應(yīng)Log日志文件保存功能
這篇文章主要介紹了Android編程實(shí)現(xiàn)項(xiàng)目中異常捕獲及對應(yīng)Log日志文件保存功能,涉及Android異常處理、日志讀寫及權(quán)限控制等相關(guān)操作技巧,需要的朋友可以參考下2018-02-02
Android使用ViewPager實(shí)現(xiàn)屏幕滑動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Android使用ViewPager實(shí)現(xiàn)屏幕滑動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
android中TabHost的圖標(biāo)(48×48)和文字疊加解決方法
開發(fā)過程中,有時(shí)候圖標(biāo)稍微大點(diǎn),比如48×48的時(shí)候,文字就會(huì)和圖標(biāo)疊加起來,遇到這種問題我們該怎樣處理呢?本文將詳細(xì)介紹希望對你有所幫助2013-01-01
Android 開發(fā)中使用Linux Shell實(shí)例詳解
這篇文章主要介紹了Android 開發(fā)中使用Linux Shell實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03
android studio按鈕監(jiān)聽的5種方法實(shí)例詳解
這篇文章主要介紹了android studio按鈕監(jiān)聽的5種方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
Android編程實(shí)現(xiàn)監(jiān)控各個(gè)程序流量的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)監(jiān)控各個(gè)程序流量的方法,涉及Android針對應(yīng)用包的遍歷,權(quán)限控制及相關(guān)屬性操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12
android使用AsyncTask實(shí)現(xiàn)多線程下載實(shí)例
這篇文章主要介紹了android使用AsyncTask實(shí)現(xiàn)多線程下載實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02

