Свойства класса данных вызывают в точном порядке Kotlin - PullRequest
0 голосов
/ 17 марта 2019

Итак, у меня есть класс данных (модель) kotlin, представляющий объект JSON (для модифицированного преобразователя GSON), и я хочу перебрать свою модель в определенном порядке для дальнейшего создания listView данных JSON.

Модель имеет вложение с ArrayLists.

Model.kt

object Model {
    data class Result(
        val results: ArrayList<Results>?,
        val syllables: Syllables,
        ...)
    data class Results(
        val definition: String,
        val partOfSpeech: String,
        val synonyms: ArrayList<String>?,
        val antonyms: ArrayList<String>?,
        ...)

Я пытался сделать некоторые размышления, но не понял, как перебрать результаты ArrayList,Нечто подобное (возникает ошибка: ArrayList не может быть приведен к Model.Results):

class CallOrder(private val obj: Model.Result) {
        fun getOrder(): List<String> {
            val result = ArrayList<String>()
            for (prop in Model.Result::class.declaredMemberProperties) {
                if (prop.name == "results")
                    for (prop1 in Model.Results::class.declaredMemberProperties)
                        result.add("${prop1.name} = ${prop1.get(prop.get(this.obj) as Model.Results)}")
            }
            return result.subList(0, 1)
        }
    }

Я хочу, чтобы что-то вызывалось так:

CallOrder(obj, property1, property2, property3.property31).next() // returns obj.property1
CallOrder(obj, "property1", "property2", "property3.property31").next() // or to do the same with string representations (of attribute path)

Есть идеи, чтобы реализовать это?

...