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

尼古拉斯·阿西诺维奇

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

 public static void getPlaceName(GoogleApiClient mGoogleApiClient, String placeId, @NonNull PlaceNameCallback callback) {
        Places.GeoDataApi.getPlaceById(mGoogleApiClient, placeId)
                .setResultCallback(places -> {
                    if (places.getStatus().isSuccess() && places.getCount() > 0) {
                        Place myPlace = places.get(0);
                        callback.onPlaceDetected(String.valueOf(myPlace.getName())); // set place name
                    }
                    places.release();
                });
    }

    public interface PlaceNameCallback {
        void onPlaceDetected(String name);
    }

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

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

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

尤里·基里尔丘克

这个东西叫做 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)})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何正确使用回调接口从onDataChange中获取RecyclerView的值列表?

如何使用ButterKnife库将文本设置为多个textview

Kotlin:如何使用Kotlin在Android中获取文本并将其设置为TextView?

将文本设置为textView

如何使用 RecyclerView 的 TextView 中的值从房间数据库为 TextView 设置新值

排球请求将先前的值设置为TextView

以线程安全的方式使用回调设置类成员

何时使用回调与仅返回值

使用回调参数获取匿名函数中的值

使用回调方法将JavaScript函数转换为类

如何使用回调将数据发送回先前的ViewController

使用回调将多个异步调用排队

如何在不同的片段上使用ModelView以获得EditText的输入并将TextView设置为其值?

Kotlin使用Java回调接口

如何将 Spannable 设置为 TextView?

将String []设置为TextView的正确方法

将结果从Room LiveData设置为textview

Android将度数符号设置为Textview

将旋转的drawable设置为TextView的drawableLeft

将textView设置为从顶部开始(快速)

使用Espresso测试TextView值不为空,如果TextView值为空,则失败

如何使用Alpha从左到右为TextView设置动画?

当向下滚动并设置为其初始值时,customlistadapter TextView值将发生更改

使用回调接口作为WPF中的DependencyProperty?

使用VBA将值设置为.Function

使用jQuery将值设置为null

使用反射将值设置为对象

将值设置为列但使用索引

使用回调接口的AsyncTask实现-在单个回调接口中处理多个调用响应