请检查下面的示例代码和注释,
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);
}
}
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() }