请检查下面的示例代码和注释,
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()
}
编辑:-除了这样做,您可以直接(View) -> Unit从活动中传递一个类型的lambda !
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。