setSingleChoiceItems из ParcelableArray (Kotlin) - PullRequest
0 голосов
/ 13 июля 2020
have a code: 
  
 val booksForDelete = arguments?.getParcelableArray("books")

  val builder = AlertDialog.Builder(activity)
        val checkedItem = -1

        builder.setTitle("Choose the book for DELETE")
        
            .setSingleChoiceItems(booksForDelete?.**map**(Book::title)?.toTypedArray(),checkedItem){dialog, which ->
                Toast.makeText(activity,"Choosen book: ${booksForDelete?.map { Book::title}?.get(which)}",Toast.LENGTH_SHORT).show()
            }

в строке ".setSingleChoiceItems ..." есть ошибка - отмечена "карта". Что не так?

PS

data class Book(val title: String, val id: Int) : Parcelable {
constructor(source: Parcel) : this(
        source.readString()!!,
        source.readInt()
)

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Попробуйте преобразовать массив Parcelable в Array<Book>:

@Suppress("UNCHECKED_CAST") 
val booksForDelete = arguments?.getParcelableArray("books") as? Array<Book>
0 голосов
/ 13 июля 2020

Выражение booksForDelete?.map(Book::title)?.toTypedArray() синтаксически правильно. Однако обычно он записывается в более подробной форме 'kotlin' - i c:

booksForDelete?.map { it.title }?.toTypedArray()
...