关于kotlin实现接口的信息

网友投稿 436 2022-12-30


本篇文章给大家谈谈kotlin实现接口,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享kotlin实现接口的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

【Android Kotlin】关于使用Http来获取数据的基本套路

1.新建一个URI.java用来存放网络请求地址和端口地址



public class URI {

    public static final String LOGIN = "192.168.2.1/api/login";

}

2.新建界面TestActivity.java

3.编写界面kotlin实现接口,由于只用于测试用,所以在这只写了TextView,具体需求看自己。
xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".TestActivity"

android:id="@+id/tv_one"

android:layout_width="0dp"

android:minHeight="48dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:gravity="center"

tools:text="数据"/

android:id="@+id/tv_two"

android:layout_width="0dp"

android:minHeight="48dp"

android:layout_height="match_parent"

android:layout_weight="1"

android:gravity="center"

tools:text="数据"/

android:id="@+id/tv_three"

android:layout_width="0dp"

android:minHeight="48dp"

android:layout_height="match_parent"

android:layout_weight="1"

android:gravity="center"

tools:text="数据"/

android:id="@+id/tv_fore"

android:layout_width="0dp"

android:minHeight="48dp"

android:layout_height="match_parent"

android:layout_weight="1"

android:gravity="center"

tools:text="数据"/

android:id="@+id/tv_five"

android:layout_width="0dp"

android:minHeight="48dp"

android:layout_height="match_parent"

android:layout_weight="1"

android:gravity="center"

tools:text="数据" /

效果图如下kotlin实现接口
4.编写实体类TestBean

这个根据所给kotlin实现接口的Json数据来写
 5.编写适配器TestAdapter(我这里用的是BaseQuickAdapter万能适配器)

class TestAdapter :BaseQuickAdapter<实体类, BaseViewHolder(你要传数据界面) {     override fun convert(helper: BaseViewHolder, item: 实体类) {

helper.setText(控件名,item.要放的数据)

.setText(控件名,item.要放的数据)

.setText(控件名,item.要放的数据)

.setText(控件名,item.要放的数据)

.setText(控件名,item.要放的数据)

}

}

6.最主要的一步,编写Activity.java

首先要初始化,由于kotlin不需要初始化控件,所以我们只需要初始化我们的适配器

mAdapter = ManagementAdapter()

然后我们要获取数据(我这里用了一下RxJava的东西)

fun getManagerfee(){

    NetWork.getEnquiryDetailsApi().getManagerPriceList(inquiryId).async(this).subscribe({

    it.isSuccess.yes {

        mAdapter.setNewData(it.data)

    }.otherwise {

        onRequestFail(it.code, it.message)

        }

    }

}

7.最后基本上如果需要从上一个界面获取数据,需要从上一个接口带过来一个id的字段,比如我这个从上一个界面带过来的inquiryId,我们就需要写一下object

companion object {

private const val EXTRA_PARAM_ID ="inquiry_id"

    fun launch(context: Context, inquiryId: String) {

            context.startActivity(Intent(context, ManagePreActivity::class.java).apply {

            putExtra(EXTRA_PARAM_ID, inquiryId)

        })

    }

}

kotlin in操作符

in 操作符大概有两种使用场景

in操作符所作用的对象的条件:只要实现operator修饰的iterator方法(该iterator方法返回Iterator对象)或者实现Iterator接口即可

2.判断是否在区间中

in操作符所作用的对象的条件:只要实现operator修饰的contains方法即可

Android Kotlin Coroutine(3):Job概述

在 Kotlin 中启动一个协程主要有 2 种方式:

一种是通过 launch 启动,一种是通过 async 启动,前者会返回一个 Job 类型的对象,后者会返回一个 Deferred 类型的对象。

Job 顾名思义就是“工作”的意思,每个协程可以想象成是一个工作任务,启动一个协程就是启动一个工作任务,来看看 Job 接口的主要定义:

从前面 Job 的接口定义中可以看到,它与线程 Thread 真的很相似,同样都有好几种不同的运行状态,下面通过几个简单的例子直观的感受一下:

执行结果为:

懒加载模式,协程还没启动,所以 isActive = false

执行结果为:

协程正常启动,所以isActive = true

执行结果为:

协程还没执行完毕,就被取消运行,所以 isCancelled = true

执行结果为:

协程已经执行完毕了,其 isCompleted 肯定为 true 了,再去调用 cancel() 方法,就没有任何影响了,所以 isCancelled = false。一件已经完成的任务,你再去取消它,是没有任何实际意义的了。

执行结果为:

协程还没有启动就取消,发现 isCompleted 与 isCancelled 都为 true,与前面几种情况对比一下,才能真正理解这几种状态的变化。

执行结果为:

协程非正常结束运行,相当于系统把它取消掉了,所以其 isCancelled 也为 true 。

在源码里可以看到以下状态图:

首先它也是一个 Job,所以它拥有 Job 的一切特性。其次,它能返回一个结果值,这点与 Java 里的 Future 类特别相似(如果你熟悉的话)。它比 Job 多了一个方法:

调用该方法时,它会等待该 Job 执行完并返回一个结果值。这是一个 suspend 方法,只能在协程内部调用,它会暂停协程的执行(当然它并不会阻塞线程),当 Job 执行完返回结果后,它又会恢复协程的执行。

一般在这种情况下,你可能会用到它:

从 Job 的接口定义中可以看到,Job 是可以有很多子 Job 的,如果一个 Job 与其他 Job 没有任何关联,那么它的完成及取消就很简单,不会影响到其他 Job 的执行。如果是有父子关系的 Job,那么他们的完成及取消则是会有相互关联关系的。

执行结果为:

执行结果为:

parentJob 被取消之后,childJob2 最后也被取消掉了。

关于kotlin实现接口和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 kotlin实现接口的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、kotlin实现接口的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微服务网关只有负载均衡吗(微服务网关对比)
下一篇:java中线程挂起的几种方式详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~