开发者社区> 问答> 正文

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

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


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);
  }
}

展开
收起
Puppet 2020-01-06 20:23:12 518 0
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()
    }
    

    编辑:-除了这样做,您可以直接(View) -> Unit从活动中传递一个类型的lambda !

    2020-01-06 20:34:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载

相关实验场景

更多