Я хочу объединить два курсора с помощью языка kotlin в AndroidX..?
Я создал автономное приложение SMS. В этом я должен объединить два курсора входящих и отправить их в один курсор с помощью MergeCursor. Но это вызывает ошибку в kotlin.Someone может помочь мне, как это исправить..
Я много пробовал и много искал, но ничего не нашел. Было бы полезно, если бы код был на языке котлин.
Основное занятие
private fun refreshSmsInbox() = try {
val smsList = ArrayList<SmsData>()
// val Cursor =
// val cursor = contentResolver.query(Uri.parse("content://sms/inbox"),null,null,null,null)
val uriInbox = Uri.parse("content://sms/inbox");
val cursor = getContentResolver().query(uriInbox, null, "address IS NOT NULL) GROUP BY (thread_id", null, null); // 2nd null = "address IS NOT NULL) GROUP BY (address"
val uriSent = Uri.parse("content://sms/sent");
val cursor1 = getContentResolver().query(uriSent, null, "address IS NOT NULL) GROUP BY (thread_id", null, null); // 2nd null = "address IS NOT NULL) GROUP BY (address"
**var c : Cursor= MergeCursor(Cursor[cursor,cursor1]) // Attaching inbox and sent sms**
c?.let{
if(it!!.moveToFirst()){
val nameID = it.getColumnIndex("address")
val messageID = it.getColumnIndex("body")
//val dateID = it.getColumnIndex("date")
val timestamp = it.getColumnIndexOrThrow("date")
val threadID = it.getColumnIndex("thread_id")
do{
val dateString = it.getString(timestamp)
val date : Date = Date(dateString.toLong())
val formatter = SimpleDateFormat("hh:mm a")
val displayTime = formatter .format(date)
val sms = SmsData(getContactName(this,it.getString(nameID!!.toInt()).toString()),it.getString(messageID),displayTime,threadID)
smsList.add(sms)
}while (it.moveToNext())
}
it.close()
}
ожидаемый
объединить два курсора.
фактический
Ошибка: MergeCursor( Cursor[cursor,cursor1])
... Классификатор "Курсор" не имеет сопутствующего объекта и поэтому здесь должен быть инициализирован.
1 ответ
Из документации:
MergeCursor
Метод ожидает массив курсоров, что означает, что вы должны сделать:
val mergedCursor = MergeCursor(arrayOf(cursor,cursor1))
часть, которую вы пропускаете, является arrayOf()
часть.
взяты из: https://developer.android.com/reference/android/database/MergeCursor