Как устранить ошибку в паре массивов в Kotlin Android - PullRequest
0 голосов
/ 28 апреля 2020
fun sharedElementTransition(view: View) {
     val pair: Array<Pair<View, String>> = Array<Pair<View,String>>(size = 3) /ht/getting issue 
     pair[0] = Pair<View,String>(imglogo, "logo_shared")
     pair[1] = Pair<View,String>(txvshared, "smartherd_shared")
     pair[2] = Pair<View,String>(imgProfilepic, "pic_shared")
     var options : ActivityOptions = ActivityOptions.makeSceneTransitionAnimation(this, *pair)

Не задано значение в параметре Init. Кроме того, есть ли другое значение прохода в паре? Есть несколько значений.

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Конструктор Array ожидает лямбда-аргумент для определения начального значения для каждого индекса массива. Поскольку вы уже знаете, что вы собираетесь надеть, а значения не зависят от индекса массива, имеет смысл использовать функцию arrayOf для создания вашего массива. Вам не нужно повторять универсальные c типы, потому что они могут быть выведены.

fun sharedElementTransition(view: View) {
    val pair: Array<Pair<View, String>> = arrayOf(
        Pair(imglogo, "logo_shared"),
        Pair(txvshared, "smartherd_shared"),
        Pair(imgProfilepic, "pic_shared")
    )
    var options : ActivityOptions = ActivityOptions.makeSceneTransitionAnimation(this, *pair)
    //...
}
1 голос
/ 28 апреля 2020

Вы должны указать ему, как инициализировать каждый элемент в списке следующим образом:

val list = Array<Pair<Int,Int>>(size = 3) { Pair(0,0) }

, который составит список из 3 элементов, которые все Pair(0,0)


Вы также можете основать инициализировать элементы на основе индекса следующим образом:

val list = Array<Pair<Int,Int>>(size = 3) { index ->
   Pair(index, index) 
}

, который создаст список, который выглядит следующим образом:

[Pair(0,0), Pair(1,1), Pair(2,2)]


Для вашего случая попробуйте это:

val pair = Array<Pair<View,String>>(size = 3) { index ->
    when(index) {
        0 -> Pair(imglogo, "logo_shared")
        1 -> Pair(txvshared, "smartherd_shared")
        2 -> Pair(imgProfilepic, "pic_shared")
    }
}
...