Я хочу объединить два курсора с помощью языка 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

Другие вопросы по тегам