Я взялся за изучение kotlin, поэтому решил написать простое приложение, использующее RecyclerView в сочетании с базой данных с поставщиками контента.В настоящее время я застрял в MainActivity в методе onCreateLoader
.В Java я обычно объявлял проекцию следующим образом:
String[] projection = {
WalletEntry._ID,
WalletEntry.KEY_TITLE,
WalletEntry.KEY_MONEY,
WalletEntry.KEY_LAST_DATE,
WalletEntry.KEY_LAST_EXPENSE,
WalletEntry.KEY_LAST_TRANSACTION_TITLE
};
, который работал нормально.Но в kotlin, когда я пытаюсь определить проекцию подобным образом, я получаю ошибку при возврате этого:
val projection = arrayOf({
WalletEntry._ID
WalletEntry.KEY_TITLE
WalletEntry.KEY_MONEY
WalletEntry.KEY_LAST_DATE
WalletEntry.KEY_LAST_EXPENSE
WalletEntry.KEY_LAST_TRANSACTION_TITLE
})
return applicationContext?.let { context ->
CursorLoader(context,
WalletEntry.CONTENT_URI,
projection,
null,
null,
null)
}!!
Это дает мне ошибку, говорящую: Требуется несоответствие типов: Array <(out) String!>?found: Array <() -> String> и, если честно, понятия не имею, как это исправить.Я видел в некоторых исходных кодах, что люди просто используют имя таблицы вместо вызова класса Contract и его записи, но я нахожу это немного запутанным при изменении имени таблицы.
Кстати, между запятыми нетИмена таблиц AS находит как неожиданный токен
Итак, как мне отформатировать проекцию, чтобы исправить ошибку?