¿Cómo hacer reference a "esto" en oyentes anónimos cuando se utiliza notación corta?

En Kotlin, ¿hay alguna manera de hacer reference a la instancia del oyente cuando se usa esta notación breve para las classs anónimas? En este caso, this refiere al context externo (por ejemplo, la instancia de la Activity ) donde se define la view :

 view.setOnClickListener { val self: View.OnClickListener = this // Not compiling, "this" references outer context } 

Cuando se utiliza la notación más larga donde se indica explícitamente la interfaz que se implementará y donde se anula explícitamente el método de callback, se puede hacer reference al oyente a través de this :

 view.setOnClickListener(object: View.OnClickListener { override fun onClick(v: View) { val self: View.OnClickListener = this // Ok } }) 

El término notación abreviada para las classs anónimas no es del todo correcto. En realidad, es una notación corta para funciones anónimas, es decir, lambdas. Por supuesto, bajo el capó se comstackn en classs, pero desde el punto de vista del lenguaje de progtwigción, las funciones anónimas no tienen identidades y, por lo tanto, no tiene sentido referirse a sus instancias a través de this .

  val animation = object : Animation() { override fun applyTransformation(interpolatedTime: Float, t: Transformation) { val layoutParam: RelativeLayout.LayoutParams? = playerView.layoutParams as RelativeLayout.LayoutParams? layoutParam?.topMargin = convertDpToPixel(position, this@SurahActivity).toInt() playerView.layoutParams = layoutParam } } 
  • Dagger2 no genera classs Dagger
  • kotlin android start nuevo service
  • Repetir acciones en estado con RxJava
  • Igual a la sobrecarga en Kotlin
  • Kotlin NullPointerException ocurrencia
  • Cómo include HtmlUnit en un proyecto de Kotlin
  • Nuevo para Kotlin ... tener problemas con Opcionales y Casting
  • No se puede inicializar el analizador de objects para el model. Productos, no se encontraron constructores aceptables
  • Cómo crear el controller de respuesta genérica para el error y validar la respuesta utilizando retrofit, rxjava y dagger
  • Enlazando una vista a una propiedad de controller cambiante
  • ClassCastException con el método bindService de ServiceTestRule