gpt4 book ai didi

android - 在 kotlin 中如何为 recyclerview 适配器设置点击事件

转载 作者:行者123 更新时间:2023-11-29 16:39:48 25 4
gpt4 key购买 nike

我是 kotlin android 的新手。我已经为 recyclerview 创建了适配器。但我无法为每个 recyclerview 项目执行点击事件。我需要引用代码的解释。请帮助我做到这一点。提前致谢。这是我的代码供您引用。

  class CustomAdapter(val readerList: ReaderResponse, mainActivity: 
MainActivity,val btnlistener: BtnClickListener) :
RecyclerView.Adapter<CustomAdapter.ViewHolder>() {


companion object {
var mClickListener: BtnClickListener? = null
}

override fun onCreateViewHolder(viewgroup: ViewGroup, index: Int): ViewHolder
{

val view=LayoutInflater.from(viewgroup?.context).inflate(R.layout.reader_list,viewgroup,false)
return ViewHolder(view)
}

override fun getItemCount(): Int {
return readerList.results.size

}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {

mClickListener = btnlistener
val item = readerList

val reader:ReaderData = readerList.results[position]
/*p0?.imageview?.text=reader.readerIcon*/
holder?.reader_status?.text=reader.readerStatus
holder?.ward_name?.text=reader.wardName
holder?.reader_id?.text=reader.readerID
holder?.reader_name?.text=reader.readerName
holder?.reader_location?.text=reader.readerLocation


if (reader.readerStatus.toLowerCase().equals("yes")){
holder.reader_name.setTextColor(Color.parseColor("#24a314"))
}else if (reader.readerStatus.toLowerCase().equals("no")){

holder.reader_name.setTextColor(Color.parseColor("#f4312d"))
holder.warning.setVisibility(View.VISIBLE)
}
}



class ViewHolder(itemView: View) :RecyclerView.ViewHolder(itemView) {

val imageview = itemView.findViewById(R.id.imageview) as Button
val reader_name = itemView.findViewById(R.id.reader_name) as TextView
val reader_location = itemView.findViewById(R.id.floor_no) as TextView
val ward_name = itemView.findViewById(R.id.ward_name) as TextView
val reader_id = itemView.findViewById(R.id.reader_id) as TextView
val reader_status = itemView.findViewById(R.id.reader_status) as TextView
val warning=itemView.findViewById(R.id.warning) as Button




}
open interface BtnClickListener {
fun onBtnClick(position: Int)
}

}

最佳答案

您可以使用以下方法。这取自 this blog作者:Antonio Leiva

假设你的数据类是ReaderData

class CustomAdapter(val readers: List, val listener: (ReaderData) -> Unit) {

/* Other methods */

override fun onBindViewHolder(holder: ViewHolder, position: Int) {

/*...*/

holder.imageview.setOnClickListener {
listener(readers[position])
}
}
}

现在在您的 Activity 或 Fragment 中

recyclerview.adapter = CustomAdapter(readersList) { readerData ->
Log.i(TAG, "${readerData.readerID} clicked")
}

我们的想法是传递一个 lambda,它将在您想要的项目被点击时执行。

关于android - 在 kotlin 中如何为 recyclerview 适配器设置点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51205887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com