我开始学习Kotlin,所以我决定使用RecyclerView编写一个简单的应用程序,并与内容提供者的数据库进行交互。
目前,我在num_jobs = len([x for x in schedule if x[0] == 3])
方法中停留在MainActivity中。
在Java中,我曾经以这种方式声明投影:
onCreateLoader
效果很好。但是在kotlin中,当我尝试以类似方式定义投影时,返回此错误:
String[] projection = {
WalletEntry._ID,
WalletEntry.KEY_TITLE,
WalletEntry.KEY_MONEY,
WalletEntry.KEY_LAST_DATE,
WalletEntry.KEY_LAST_EXPENSE,
WalletEntry.KEY_LAST_TRANSACTION_TITLE
};
它给我一个错误,说:类型不匹配 是否必需:Array <(out)String!>? 找到:Array <()->字符串> 老实说,我不知道如何解决它。我在某些源代码中看到,人们只是使用表的名称而不是调用Contract类及其条目,但是当更改表的名称时,我发现它有点混乱。
顺便说一句,表名之间没有逗号,AS发现它是意外令牌
那么,如何重新格式化我的投影以修复错误?
答案 0 :(得分:0)
当您将字段列表包含在{}中时,kotlin将其解释为“函数”主体,返回值将是最后一行,因此kotlin发现的类型是:
Array<() -> String> // An array of functions with no parameters that returns strings
因此,当您创建数组时,当CursorLoader所需的类型为
时,您将在创建一个“函数”数组。Array<(out) String!>? //A nullable array of strings
@rciovati告诉您,只需删除{},您将获得CursorLoader()的正确类型