android - 如何将点击监听器添加到我的回收器视图(Android kotlin)
问题描述
我有一个带有 2 个元素的回收器视图。我想添加 2 个按钮来做不同的事情(取决于回收器视图的哪个元素。怎么可能做到这一点?我的元素是 textviews
SettingsActiv.kt
class SettingsActiv : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_settings)
val arrow_backBtn = findViewById(R.id.settingsToolbarBtn) as Button
arrow_backBtn.setOnClickListener{
startActivity(Intent(this, MainActivity::class.java))
}
val linearLayout = findViewById(R.id.constr) as LinearLayout
val recyclerView = RecyclerView(this)
val series = ArrayList<SeriesModel>()
recyclerView.layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
series.add(SeriesModel("Unit of length","Meter"))
series.add(SeriesModel("Unit of temperature","Celcius"))
val adapter = MyAdapter(series)
recyclerView.setHasFixedSize(true)
recyclerView.layoutManager = LinearLayoutManager(this, LinearLayout.VERTICAL, false)
recyclerView.adapter = adapter
linearLayout.addView(recyclerView,1)
}
我的适配器.kt
class MyAdapter(private val seriesList: ArrayList<SeriesModel>) : RecyclerView.Adapter<MyAdapter.MyViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyAdapter.MyViewHolder {
val v = LayoutInflater.from(parent.context).inflate(R.layout.activity_settings_child, parent, false)
return MyViewHolder(v)
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.textViewName.text = seriesList[position].name
holder.textViewNameDesc.text = seriesList[position].desc
}
override fun getItemCount(): Int {
return seriesList.size
}
class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val textViewName = itemView.findViewById(R.id.name) as TextView
val textViewNameDesc = itemView.findViewById(R.id.desc) as TextView
}
}
解决方案
尝试这个
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.textViewName.text = seriesList[position].name
holder.textViewNameDesc.text = seriesList[position].desc
holder.textViewName.setOnClickListener {
Toast.makeText(context,"clicked",Toast.LENGTH_SHORT).show()
}
}
推荐阅读
- react-native - 隧道时阻止 exp 切换到 LAN URL
- regex - 比赛号码以 1 结尾,但以 11 结尾时除外
- google-chrome - DNS http -> https 浏览器缓存
- kendo-grid - Kendo Grid,如何在从服务器获取数据时处理错误
- java - Android 错误:DateFormat() 有时显示 12 小时格式,而它应该显示 24 小时格式
- mongodb - 如何在mgo框架中使用mongodb 3.6的数组过滤器?
- amazon-web-services - 将 S3 存储桶导出到 Blob 存储
- python - python贪婪匹配中的错误
- javascript - 使用按钮在 UL 中动态编辑 LI
- c# - 如何在不使用 System.IO 的情况下更改文件修改日期