Android – Kotlin – 对象必须声明为抽象或实现抽象成员

我为我的RecyclerView设置了一个ItemClickLister,像这样: ItemClickSupport.addTo(recyclerView!!).setOnItemClickListener( object : ItemClickSupport.OnItemClickListener { override fun onItemClicked(recyclerView: RecyclerView?, position: Int, v: View?) { val row = recyclerView!!.getChildAt(position) val el = row.findViewById(R.id.active_expandablelayout) as ExpandableLayout if (el.isExpanded) { el.collapse() } else { el.expand() } } } ) 使用我翻译成Kotlin的ItemClickSupport库。 我得到一个object (第2行)的错误,说: 对象必须声明为抽象或实现抽象成员。 我对Kotlin来说真的很陌生,在SO上我也找不到任何解决方案。 任何帮助是极大的赞赏。 编辑: 这是我的ItemClickSupport.kt : class ItemClickSupport private constructor(private val mRecyclerView: RecyclerView) { private […]

退货和内联

我试图find相当于这个Java返回的Kotlin: return new int[] {1, 2, 3}; 我试过只是宣布然后像这样返回: val returnArr: IntArray = intArrayOf(1, 2, 3) return returnArr 但是我得到一个警告,说:“variables只用于下面的回报,可以内联”。 内联是什么意思? 有没有办法在一条线上做到这一点?

javascript匿名对象在kotlin

如何在kotlin中创建JavaScript匿名对象? 我想创建这个对象传递给nodejs应用程序 var header = {“content-type”:”text/plain” , “content-length” : 50 …}

validation数据类参数Kotlin

如果我使用Kotlin数据类为我的值对象建模,那么处理validation的最佳方法是什么? 看起来像init块是唯一的逻辑地方,因为它在主构造函数之后执行。 data class EmailAddress(val address: String) { init { if (address.isEmpty() || !address.matches(Regex(“^[a-zA-Z0-9]+@[a-zA-Z0-9]+(.[a-zA-Z]{2,})$”))) { throw IllegalArgumentException(“${address} is not a valid email address”) } } } 使用JSR-303示例 缺点是需要加载时间编织 @Configurable data class EmailAddress(@Email val address: String) { @Autowired lateinit var validator: Validator init { validator.validate(this) } }

从Kotlin的同一行读取多个整数?

我正在做Hackerrank Kotlin的30天代码,我被困在第7天。 你怎么读一条线上的多个整数? 它如何被添加到一个数组,并显示在相反的? 我用Java解决了这个问题,但缺少Kotlin所需的语法 输入: 4 1 4 3 2 我的代码: fun main(args: Array) { val n = readLine()!!.toInt() var arr = Array(n) for(i in 0 until n) { arr[i] = readLine()!!.toInt() //Not Working? nor does readLine()!!.split(‘ ‘).toInt() } for(item in arr.size – 1 downTo 0) { print(“${item} “) } }

Kotlin:如何将一个对象函数作为parameter passing给另一个?

我正在努力学习functionKotlin,并写下了这个测试代码: import java.util.* data class BorrowerX(val name: String, val maxBooks: Int) { companion object { fun getName(br: BorrowerX): String = br.name fun findBorrowerX(n: String, brs: ArrayList): BorrowerX? { val coll: List = brs.filter { BorrowerX.getName(it) == n } if (coll.isEmpty()) { return null } else return coll.first() } fun findBorrowerX2(n: String, brs: ArrayList, f: (BorrowerX) […]

为什么公共内联函数可以调用私有构造函数?

我有我的类的私人构造函数,并实施援助对象的某种“通用构造函数” class Test private constructor(className: String) { companion object { // If I remove the internal it fails internal inline operator fun invoke(): Test { return Test(T::class.java.name) // why can I even call it? The constructor is private } } } 我甚至可以有一个公共的内联函数调用通用的构造函数 public inline fun test() = Test() // Why can I call it, it […]

聪明的演员是不可能的,因为…是一个可变的财产,可能已经改变了这个时间

我正在努力获得一个类,它结合了Kotlin列表,集合和地图。 我希望编写isScalar函数,如果对象只包含一个元素并写入,它应该返回true import it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap import it.unimi.dsi.fastutil.objects.ReferenceArrayList import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet class Args { var list : ReferenceArrayList? = null var set : ReferenceOpenHashSet? = null var map : Reference2ReferenceOpenHashMap? = null fun isEmpty() : Boolean { return list === null && set === null && map === null } fun isScalar() : Boolean { if(list !== null […]

用于Yubico OpenPGP智能卡的PGP数据加密

我试图在Java应用程序中基于Yubikey NEO OpenPGP智能卡小程序实现PGP加密。 这似乎是一个黑暗的艺术,并不容易谷歌这个东西,但这里是我到目前为止: 卡被初始化,密钥是使用gpg工具生成的。 它一般工作。 我有我的公钥以.asc格式,并设法加载到org.bouncycastle.openpgp 使用javax.smartcardio API连接到USB加密狗的智能卡。 选择OpenPGP小程序 val pgpAID = bytes(0xD2, 0x76, 0x00, 0x01, 0x24, 0x01) val answer = cardChannel.transmit(CommandAPDU(0x00, 0xA4, 0x04, 0x00, pgpAID)) 成功向卡提交正确的PIN码 val pin = “123456” return bytes(0x00, 0x20, 0x00, 0x82, pin.length) + pin.toByteArray(Charsets.UTF_8) 发送准成功(见下文) decipher命令 bytes(0x00, 0x2a, 0x80, 0x86, data.size) + data + bytes(0x00) 当data = “xxxx”.toByteArray() ,结果是SW=9000 […]

注释必须调用超级的接口函数

我正在创建接口和一些function,它有一个机构。 需要的是,实现此接口的类在执行其他代码之前,必须在覆盖函数中调用super。 我怎样才能做到这一点? interface Watcher { fun funWithoutBody() fun startWatching() { //do some important stuff which must be called } }

Kotlin language will be the best programming language for Android.