首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin入门(23)适配器的进阶表达

开发者继承RecyclerView.Adapter之后,只要完成业务上的代码逻辑即可,无需进行BaseAdapter视图持有者的手工重用。...由于循环视图适配器并不提供列表项的点击事件,因此开发者要自己编写包括点击、长按在内的事件处理代码。...这么神奇的魔法,快来看看Kotlin的适配器代码是如何书写的: //利用Kotlin的插件LayoutContainer,在适配器中直接使用控件对象,而无需对其进行显式声明 class RecyclerStaggeredAdapter...,需要在适配器代码头部加上以下两行代码,其中第一行代码表示引用了Kotlin的扩展插件LayoutContainer,第二行代码与Activity的一样表示导入了指定布局文件里面所有控件对象: import...至此本节的适配器实现过程终于落下帷幕,一路上可谓是过五关斩六将,硬生生把数十行的Java代码压缩到不到十行的Kotlin代码,经过不断迭代优化方取得如此彪炳战绩。

1.8K41

IDEA上使用Kotlin插件出现的几个小问题

IDEA上使用Kotlin插件出现的几个小问题 2017-07-04 by Liuqingwen | Tags: Kotlin | Hits 一、前言 之前使用2016版本的 IntelliJ...IDEA 写 Kotlin 程序,遇到网络不给力的时候偶尔会莫名其妙地出现 Kotlin 不能正常使用的问题,特别是 Kotlin 有新版本更新的时候,正犹豫要不要下载新版本,问题又出来了,于是乎下载安装了...这就是一个坑了,我知道 Kotlin 插件并没有安装,这是错误的显示,只要刷新或者重启,或者点击插件窗口下面的 Install JetBrains plugin......Kotlin not configured 错误 新版本我使用了 4.0 版的 Gradle 构建工具,但是刷新后构建项目出现 Kotlin not configured 的错误,也没有任何按钮提示可以操作...在 StackOverflow 上搜到了这个 Bug 的解决方法: “Gradle project sync failed” & “Kotlin not configured” : //implementation

27.1K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    RecyclerView中获取点击位置的接口被废弃了?

    holder.adapterPosition被划线不推荐使用了? 《第三行代码》这才刚刚出版,竟然就有API被弃用了,我决定对这个问题好好研究一下,并加急写一篇文章进行分析。...那是因为你或许还没有遇到过这样的需求,而我就遇到了。 两年前我在做giffun这个项目时,查看GIF图详情的界面就是使用RecyclerView来做的。 ?...如果这时,我想要监听BodyAdapter中元素的点击事件,那么调用getAdapterPosition()方法,获得的到底是BodyAdapter中元素的点击位置,还是合并之后元素的点击位置呢?...另外说一下,由于《第一行代码 第3版》已经出版,以后未来我自己编写的所有文章都会使用Kotlin语言,Java就不再使用了,想学习Kotlin语言的朋友们可以考虑一下这本书。...我的QQ群里有个群友还说,自己之前学过几轮Kotlin了,都没有这本书讲得好,看得我也是心里暖暖的。

    4.5K43

    Android SoundPool 音效播放库

    介绍 我们如果想在应用中进行播放一些音效,例如提示音,提示短语等简短的音频文件。可以使用 SoundPool 这个工具进行快捷播放。...使用 老版本SoundPool是可以直接new SoundPool()进行创建的,但是自从Android-API 21 之后就被废弃了。...如果没有加载完成就播放,是没有声音的 2.3 监听加载状态 当我们使用load()方法进行加载之后,只是将音频文件提取存储在内存中了。这个提取和存储过程是在异步线程中进行操作的。...这些配置,在初始化播放的时候就需要配置上。 我们如果播放成功后想修改声道,优先级(暂时意义没有多大),循环模式,播放速率等。...释放全部音频: soundPool.release(); soundPool = null; 当我们,使用release方法进行操作时,会将load加载的全部资源进行释放,也会释放SoundPool对象使用的所有内存和本机资源

    75040

    安卓软件开发:使用AndroidView(MDC)实现高级轮播图App-下篇

    在这篇文章里,我分享一个用 MDC和 Kotlin 语言实现使用AndroidView和Kotlin开发轮播图功能。无论你有没有开发经验,相信这篇文章对你会非常有所帮助。...= "1.3.2" recyclerviewVersion = "1.2.1" 2.7.2 在 Kotlin 设置 Carousel 在 Activity 中使用 RecyclerView 来显示轮播图...使用 LazyColumn 和 LazyRow 替代 RecyclerView,可以很轻松实现复杂的布局和滚动行为,减少了代码量,提升了开发体验。...4.3 布局管理:XML VS Kotlin 代码 MDC:XML 文件布局 MDC 使用的是传统的 XML 文件布局,像 LinearLayout、RelativeLayout 等都是通过 XML 定义的...它只会渲染屏幕上可见的内容,减少了不必要的计算。再加上它的状态管理机制,减少了手动刷新视图的复杂度,使得开发和维护的成本很低。 4.5 自定义和扩展性:谁更灵活?

    59881

    《Kotin 极简教程》第13章 使用 Kotlin 和 Anko 的Android 开发

    第13章 使用 Kotlin 和 Anko 的Android 开发 ---- 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 非常感谢您亲爱的读者...我们使用的com.github.thorbenprimke:realm-recyclerview 依赖包在在jitpack.io上, 所以我们还需要配置一下仓库地址: repositories {.../thorbenprimke/realm-recyclerview 另外, Kotlin使用 Realm 还要加上注解处理的依赖库: // kotlin使用realm的注解处理依赖库 kapt...而我们有了 Butter Knife,就可以通过使用注解直接生成样板代码。例如,在 Java 中我们可以通过在字段上使用 @BindView 来替代 findViewById 的调用。...我们可以像在 Java 中一样方便的使用 Android 开发的流行的库诸如 Butter Knife、Realm、RecyclerView等。

    3.6K30

    Android面试之5个Kotlin深度面试题:协程、密封类和高阶函数

    面试题目1:Kotlin中的协程与线程的区别是什么?如何在Android中使用协程进行异步编程?...面试题目2:Kotlin中的扩展函数和扩展属性是什么?如何在Android开发中使用它们? 解答: 扩展函数和扩展属性允许你在不修改类的情况下向现有类添加新功能。...扩展函数:扩展函数是在现有类上添加的新函数。它们的定义方式如下: fun String.addExclamation(): String { return this + "!"...例如,可以使用高阶函数来处理RecyclerView的点击事件: fun RecyclerView.onItemClick(action: (Int) -> Unit) { this.addOnItemTouchListener...: recyclerView.onItemClick { position -> // 处理点击事件 } 面试题目4:Kotlin中的密封类(sealed class)是什么?

    77010

    Jetpack新成员,Paging3从吐槽到真香

    另外,由于Paging 3是Google基于Kotlin协程全新重写的一个库,所以它主要是应用于Kotlin语言(Java也能用,但是会更加复杂),并且以后这样的库会越来越多,比如Jetpack Compose...如果你对于Kotlin还不太了解的话,可以去参考我的新书《第一行代码 Android 第3版》。...写到这里,我们的这个项目已经完成了一大半了,接下来开始进行界面展示相关的工作。 由于Paging 3是必须和RecyclerView结合使用的,下面我们定义一个RecyclerView的子项布局。...第一点,我们使用Kotlin的高阶函数来给重试按钮注册点击事件,这样当点击重试按钮时,构造函数中传入的函数类型参数就会被回调,我们待会将在那里加入重试逻辑。...知识,可以参考我的新书 《第一行代码 第3版》,点击此处查看详情。

    2.5K20

    Kotlin | 从线程到协程,你是否还存在 上的使用疑问

    Kotlin | 从线程到协程,你是否还存在理解上的疑问 引言 在2022的今天,对于一个 Android 开发同学,如果你使用 Kotlin 作为主要开发语言,那么协程是必不可缺的 异步框架 。...不过对于初学者来说,有时候依然存在一些理解问题或者使用上的不解。毕竟我们用了那么多年的回调与线程,突然转变思想,的确需要过程。...对于初使用协程而言,我们的想法应该怎样转变,这也即本文的主章: 面对协程,我们应该怎样去接受解决思路的转变 解决方法 在阐述 [莫须有] 的思想之前,我先写出下面的不同解法,以便大家更好的体会差异: 1...协程 解析 在 Android 官网中,对协程的描述如下: 协程是一种并发设计模式,您可以在 Android 平台上使用它来简化 异步执行 的代码。...说简单点就是,在协程的世界中,一切都是同步,按顺序进行。即一步接一步,我们等待上一步的结果,然后决定是否继续执行下一步。

    1.4K20

    造了四个轮子之后,我们上路跑一跑

    支持Kotlin属性委托,在Kotlin环境下使用,可以像读写变量一样读写配置。...推荐指数:★★★★ LightEvent 项目地址:LightEvent 轻量级事件通信方案(类似于EventBus的作用),不到50行代码。 简单到极致,使用也很方便。...虽然功能简单的不能再简单了,但是“刚需”还是要提供的: 可以设置存储路径,然后点击图片详情页右上角的“下载”即可。...四、总结 上面四个轮子最简单的LightEvent只有不到50行代码,最复杂的Doodle也不过100K,都是轻量级的组件。 最近Kotlin比较火,所以顺势尝试尽量用Kotlin来实现(改写)。...Kotlin编写代码确实相对Java总体上要更简洁,很多人说能省1/3的代码; 这个我没有具体去算过,从这段时间的体会来看,有部代码确实可以写得比Java简洁,尤其是集合运算,以及能用上Lambda的地方

    66000

    Google挖坑后人埋-ViewBinding(上)

    ,虽然它很方便,但实际上,这是牺牲掉一部分内存来换取的方便,在对应用性能日益严格的今天,这种做法势必会被淘汰掉。...当然也有一些优势: Kotlin Java通吃 空安全 ViewBinding初步 ViewBinding就是为了解决kotlin-android-extensions的这些使用问题而诞生的,它的目的只有一个...❝跨Module使用的时候,子Module也需要开启ViewBinding功能 ❞ 这个Binding文件,实际上就相当于kotlin-android-extensions的HashMap,同时由于它在编译时就生成了...,特别是RecyclerView中使用,也是一个非常常见的使用场景。...向大家推荐下我的网站 https://xuyisheng.top/ 点击原文一键直达 专注 Android-Kotlin-Flutter 欢迎大家访问

    2.3K20

    实战 | 认识 RecyclerView

    RecyclerView 是一个容器,它用于显示列表形式 (list) 或者网格形式 (grid) 的数据,比如文本或者照片。 当列表滑动的时候,实际上只有少量邻近的视图会显示在屏幕上。...粉红色的方格表示屏幕上正在显示的表项,黄色的方格表示屏幕可视范围之外的表项是如何被回收并转为新的视图 为什么您需要使用 RecyclerView 呢?...RecyclerView 使用 ViewHolder 模式,这样做可以提高性能,因为它无需频繁调用 findViewById() 方法即可访问表项的视图; RecyclerView 使用 LayoutManager...下面的代码会使用 Kotlin 语言,但是 RecyclerView 也可以在 Java 语言中使用。...首先在 Android Studio 里创建一个工程,并且使用 Empty Activity 模板。设置项目名称,并且选择 Kotlin 作为项目所用的语言。

    1.3K30

    Android基于DataBinding封装RecyclerView实现快速列表开发

    前言 在移动应用开发中,列表组件是一个非常常见的 UI 组件,绝大多数应用开发中都会使用到列表组件进行界面的开发,在 Android 开发中列表组件一般使用官方提供的 RecyclerView ,而...RecyclerView 的常规开发需要手动创建对应的 Adapter、ViewHolder 代码,且每个 RecyclerView 的使用都需要编写这种的样板代码,存在重复代码,降低了开发效率,于是为了提高列表的开发效率...,无需编写 java/kotlin 代码即可完成对 RecyclerView 的全部配置,包括列表数据、item 布局、事件等,具体可配置属性如下: 属性名 类型 描述 data List RecycleView...' id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' } ardf 的使用配置就完成了,点击 Sync Now同步 build.gradle...最后在页面布局中的 RecyclerView 上配置 itemViewType 属性,如下: recyclerview.widget.RecyclerView

    2.9K30

    开发时遇到监听的事件处理机制和SoundPool播放音效解决方法以及外部类的使用【Android】

    当指定的事件发生在事件源中时,将通知事件侦听器执行相应的操作 重写点击事件的处理方法onClick() public class MainActivity extends Activity {...此表单较少使用!因为外部类不能直接访问用户接口类中的组件,所以应该通过构造方法传入组件以供使用;结果是代码不够简洁!...", Toast.LENGTH_SHORT).show(); } } SoundPool播放音效 在Android上,预设的多媒体框架是OpenCore...// SoundPool sp = spb.build(); // 创建SoundPool对象,转换音频格式 上下文:上下文 ResId:资源ID 优先级:这是一个无用的参数。...除了以上这些,还有两种款式供我们选择,但不建议使用,因为它们很难看。

    1.5K10

    【翻译】Kotlin 1.1 新版本同样适合安卓开发者

    众所周知, RecyclerView 和 ListView 一样没有标准的处理单项视图点击事件的方式,所以我们必须动手自己写。...) : RecyclerView.Adapter() { ... } 同时你的 ViewHolder 可能也需要接收这个监听事件,把它赋值给这个视图的点击事件监听者...但是,我们可以使用类型别名来表示一个点击事件监听者: typealias ClickListener = (View) -> Unit 这样我们就能在任意需要这个事件监听的地方使用它,像这样: class...举个例子,在文章的前面我解释了如何使用代理更新一个 RecyclerView 的适配器,后面的代码是这样的: var items: List by Delegates.observable...Kotlin 带给安卓开发者的益处毋庸置疑,你完全可以从今天开始就使用 Kotlin 来开发安卓软件。

    1.1K60
    领券