Kotlin,将值设置为TextView使用回调接口

时间:2018-03-27 21:20:09

标签: kotlin kotlin-android-extensions kotlin-extension

这样的小例子,在Java中我有:

    getPlaceName(mGoogleApiClient, arrivalId[0], name -> textArrival.setText(name));

然后我可以将地名设置为TextView:

package repository

import domain.Product
import org.springframework.data.repository.PagingAndSortingRepository

interface ProductCatalogRepository : PagingAndSortingRepository<Product, String> {}

请告诉我如何在Kotlin上设置这样的地名?

1 个答案:

答案 0 :(得分:2)

这个东西叫做SAM(单一抽象方法),它全都是关于Java世界的。在当前版本的Kotlin中,如果您的接口在Kotlin中声明,则不能使用SAM。为此,他们使用高阶函数而不是接口。 但是,正如我所知,在Kotlin的1.3版本中我们可能会得到这种可能性(这些信息来自对JetBrains的Kotlin开发人员的采访,如果你熟悉俄语,你可以在这里看到这篇文章: https://habrahabr.ru/company/redmadrobot/blog/351516/

顺便说一句,你可以在Kotin中使用SAM,但前提是你的接口是用Java声明的。对于您的示例,它应如下所示:

getPlaceName(mGoogleApiClient, arrivalId[0], PlaceNameCallback { textArrival.setText(it)})