Адинамический доступ для просмотра свойств в Котлине - PullRequest
0 голосов
/ 07 июля 2019

Мне нужно в моем приложении для Android, чтобы избежать необходимости повторять строку каждый раз, когда появляется новый случай, я хотел сделать вызов этой строки в цикле forEach.

Я нахожусь во фрагменте, поэтому мой view относится к текущему представлению, в котором я не могу динамически получать доступ к своим свойствам.

Вот что я сделал:

val product = arguments!!.getParcelable<Product>(ARG_PRODUCT)!!
listOf("fat", "fat_acids", "salt", "sugar").forEach {
    view.get<TextView>(it).text = view.context.getString(
        resources.getIdentifier("of_${it}", "string", view.context.packageName),
        product.nutriFacts[it].quantityFor100,
        product.nutriFacts[it].unit
    )
}

Тогда студия Android сказала мне, что мне нужно создать новый метод доступа к свойствам, в данном случае оператор:

private operator fun <T> View.get(property: String): T {
    return this[property]
}

Но теперь ошибка является ошибкой StackOverflow (ирония не так) в этой точной строке:

return this[property]

Как мне этого добиться?

...