android - kotlin/android:在recyclerview中设置每个按钮来启动它自己的activity
问题描述
我想做一个活动来选择在游戏中玩哪个级别。为此,我创建了一个带有按钮的回收站视图。这些按钮中的每一个都应该开始其相应的级别。使用下面的代码(取自适配器),它们都只是指向 MainActivity。有没有简单的方法来改变这个?
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.levelButton?.text = items.get(position)
holder.itemView.levelButton.setOnClickListener{
var gotoLevel= Intent(context,MainActivity::class.java)
context.startActivity(gotoLevel)
}
}
如果这太明显了,我很抱歉。几天前我才开始编码,但仍处于那个阶段,您甚至不知道针对您的问题的适当谷歌搜索词。
解决方案
您应该从超类 ( RecyclerView.Adapter ) 中获取上下文。并使用它从您的View的setOnClickListener方法创建一个 Intent
class YourHolder(view: View) : RecyclerView.ViewHolder(view) {
private var buttonView = view.buttonView
// Variable for the Context
private lateinit var context : Context
fun bindHolder(itemData: ItemData) {
// Init context
context = super.itemView.context
// OnClick Button Handler
buttonView .setOnClickListener{
// Move to AnotherActivity
val intent = Intent(this.context, AnotherActivity::class.java)
intent.putExtra("key", ItemData.value)
startActivity(this.context, intent, null)
}
}
}
推荐阅读
- r - 在没有 github 的云服务器上创作 OpenCPU-Apps?
- javascript - 在 onSwitching 后从 react-swipeable-views 中删除元素
- shell - 在 vim 中编辑正在运行的程序
- javascript - 为什么 jquery video.trigger("play") 触发两次?
- react-native - 反应原生。为什么安卓模拟器这么慢?
- arrays - 属性数组的总和
- android - Flutter - 选定的项目移动到 ListView 的顶部
- javascript - JavaScript:将 div 的内容保存为 .txt 但保持格式化
- php - 警告:count() 在我的 single.php 中获取 wordpress 帖子的内容
- java - 如何使用正则表达式将字符串分成 n 个单词分组的部分并拆分?