[BaseQuickAdapter]getBindingAdapterPosition异常
最近在使用BaseRecyclerViewAdapterHelper的时候,在设置adapter的setOnItemClickListener方法时,点击item报错
java.lang.NoSuchMethodError: No virtual method getBindingAdapterPosition()I in class Lcom/chad/library/adapter/base/viewholder/BaseViewHolder; or its super classes (declaration of 'com.chad.library.adapter.base.viewholder.BaseViewHolder' appears in /data/app/
问题原因是:
getAdapterPosition这个方法已经被废弃了,详见https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.ViewHolder#getAdapterPosi ...
鸿蒙 Mate30安装Google服务
视频网址: https://www.youtube.com/watch?v=qBDbKLnRzu0
应用下载地址: https://ytf.lanzoui.com/ggkk
https://ytf.lanzoui.com/adb
安装APK同时已上传百度网盘
Kotlin基础-继承与重载
继承与重载继承类默认都是封闭的,要让某个类开放继承,必须使用open关键字修饰它
kotlin-定义类与field关键字
定义类与field关键字 针对你定义的每一个属性,Kotlin都会产生一个field、一个getter、以及一个setter,field用来存储属性数据,你不能直接定义field,Kotlin会封装field,保护它里面的数据,只暴露给getter和setter使用。属性的getter方法决定你如何读取属性值,每个属性都有getter方法,setter方法决定你如何属性赋值,所以只有可变属性才会有setter方法,尽管Kotlin会自动提供默认的getter和setter方法,但需要控制如何读取属性时,你可以自定义它们
import java.util.Localeclass Player { var name: String = "Jack" get() = field.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() } set(value) { ...
Kotlin-集合
集合可以方便你处理一组数据,也可以作为值参传给函数,和我们学过的其他变量类型一样,List、Set和Map类型的变量,也分为两种,只读和可变。
List创建与元素获取
getOrElse是一个安全索引取值函数,它需要两个参数,第一个是索引值,,第二个是能提供默认值的lambda表达式,如果索引值不存在的话,可用来代替异常。
getOrNull是Kotlin提供的另一个安全索引取值函数,它返回null结果,而不是抛出异常
val list = listOf("Jack","Rose","Lee") println(list.getOrElse(3) { "Unknown" }) // Unknown println(list.getOrNull(3) ) // null println(list.getOrNull(3) ?: "Unknown1") //Unknown1
可变列表 在Kotlin中,支持内容修改的列表叫可变列表, ...
2022-09-08-string模板
string模板
模板支持在字符串的引号内放入变量值
还支持字符串里计算表达式的值并插入结果,添加在${}中的任表达式,都会作为字符串的一部分求值.
Kotlin-表达式
Kotlin表达式
if/else if 表达式
range表达式
in A .. B,in关键字用来检查某个值是否在指定范围内
当然,也可以用 !in A .. B 来反向判断
when表达式
允许编写条件式,在某个条件满足时,对应执行的代码
只要代码包含 else if 分支,都建议改用when 表达式
val school = "小学1" val level = when (school) { "学前班" -> "幼儿" "小学" -> "少儿" else -> println("未知") }
Kotlin嵌套类
嵌套类如果一个类只对另一个类有用,那么将其嵌入到该类并使这两个类保持在一起是合乎逻辑的,可以使用前套类
class Player2 { class Equipment(var name: String) { fun show() = println("equipment: $name") } fun battle() { }}fun main() { Player2.Equipment("knife").show()}
数据类
数据类,是专门用来存储数据的类
数据类提供了toString的个性化实现
==符号默认情况下,比较对象就是比较它们的引用值,数据类提供了equals和hashCode的个性化实现
data class Coordinate(var x: Float, var y: Float) { var isInBounds = x > 0 && y &g ...
Kotlin--扩展
Kotlin 的扩展(Extension),主要分为两种语法:第一个是扩展函数,第二个是扩展属性。从语法上看,扩展看起来就像是我们从类的外部为它扩展了新的成员。
这在实际编程当中是非常有用的功能。我们可以来想象一个场景:我们想修改 JDK 当中的 String,想在它的基础上增加一个方法“lastElement()”来获取末尾元素,如果使用 Java,我们是无法通过常规手段实现的,因为我们没办法修改 JDK 的源代码。任何第三方提供的 SDK,我们都无权修改。
不过,借助 Kotlin 的扩展函数,我们就完全可以在语义层面,来为第三方 SDK 的类扩展新的成员方法和成员属性。不管是为 JDK 的 String 增加新的成员方法,还是为 Android SDK 的 View 增加新成员属性,我们都可以实现。
什么是扩展函数和扩展属性?
扩展函数,就是从类的外部扩展出来的一个函数,这个函数看起来就像是类的成员函数一样。这里,我们就以 JDK 当中的 String 为例,来看看如何通过 Kotlin 的扩展特性,为它新增一个 lastElement() 方法。
/* ① ...
Kotlin -- Object关键字
语义:
匿名内部类
单例模式
伴生对象
本质: 在定义一个类的同时还创建了对象
匿名内部类在Java中,我们一般这么写
public interface OnClickListener { void onClick(View v); }image.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } });
在Kotlin中
binding.textView.setOnClickListener(object : View.OnClickListener{ override fun onClick(v: View?) { } })
.
不过,在 Kotlin 中,匿名内部类还有一个特殊之处,就是我们在 ...