Android Kotlin-如何在主活动类中将名称函数分配给另一个类中的setOnClickListener?

问题描述 投票:0回答:1

请检查下面的示例代码和注释,

class MainActivity : AppCompatActivity(), MyListener {
  fun OnViewItemClicked(){
    // do something
  }
}

class AnotherClass() : RecyclerView.Adapter<MyAdapter.ViewHolder>() {
  override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    // how do i set this to OnViewItemClicked declared in class MainActivity?
    holder.itemView.setOnClickListener(OnViewItemClicked);
  }
}
android events kotlin
1个回答
1
投票
只需将Listener instance传递给适配器:-就像:-

val adapter = AnotherClass(this@MainActivity)

然后在适配器中

class AnotherClass(private val listener: MainActivity): RecyclerView.Adapter<MyAdapter.ViewHolder>() { .... .... holder.itemView.setOnClickListener { listener.OnViewItemClicked() } .... }

说明-这是在kotlin lambda的帮助下完成的,即等效于:-

val clickLambda: (View) -> Unit = { listener.OnViewItemClicked() }
© www.soinside.com 2019 - 2024. All rights reserved.