首页 > 解决方案 > 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)
    }
}

如果这太明显了,我很抱歉。几天前我才开始编码,但仍处于那个阶段,您甚至不知道针对您的问题的适当谷歌搜索词。

标签: androidandroid-activitykotlinandroid-recyclerviewonclicklistener

解决方案


您应该从超类 ( 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)
        }
    }
}

推荐阅读