Конвертировать объекты данных с одинаковым типом в список - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть одна проблема, когда в одном запросе мой результат является объектом, который имеет свойства того же типа. В этом случае мне нужно преобразовать это тело в один список монет

data class Currencies(
@SerializedName("abc")
val abc: Coins,
@SerializedName("bch")
val bch: Coins,
@SerializedName("bnb")
val bnb: Coins,
@SerializedName("brl")
val brl: Coins,
@SerializedName("brzx")
val brzx: Coins,
@SerializedName("bsv")
val bsv: Coins,
@SerializedName("btc")
val btc: Coins,
@SerializedName("btg")
val btg: Coins,
@SerializedName("cfty")
val cfty: Coins,
@SerializedName("crw")
val crw: Coins,
@SerializedName("dash")
val dash: Coins,
@SerializedName("dcr")
val dcr: Coins,
@SerializedName("eos")
val eos: Coins,
@SerializedName("epc")
val epc: Coins,
@SerializedName("etc")
val etc: Coins,
@SerializedName("eth")
val eth: Coins,
@SerializedName("gmr")
val gmr: Coins,
@SerializedName("gnt")
val gnt: Coins,
@SerializedName("iop")
val iop: Coins,
@SerializedName("lcc")
val lcc: Coins,
@SerializedName("ltc")
val ltc: Coins,
@SerializedName("mxt")
val mxt: Coins,
@SerializedName("nbr")
val nbr: Coins,
@SerializedName("omg")
val omg: Coins,
@SerializedName("onix")
val onix: Coins,
@SerializedName("prsp")
val prsp: Coins,
@SerializedName("smart")
val smart: Coins,
@SerializedName("sngls")
val sngls: Coins,
@SerializedName("trx")
val trx: Coins,
@SerializedName("tusd")
val tusd: Coins,
@SerializedName("usdt")
val usdt: Coins,
@SerializedName("xmr")
val xmr: Coins,
@SerializedName("xrp")
val xrp: Coins,
@SerializedName("zec")
val zec: Coins,
@SerializedName("zrx")
val zrx: Coins
)

Мой ответ, тогда как я могу добавить монеты в список монет? Я получаю объекты Валюты и хочу отображать их в одном представлении переработчика с одним изменяемым списком Монет

1 Ответ

1 голос
/ 08 февраля 2020

Вы можете использовать отражение для обработки всех свойств (для этого требуется kotlin-reflect библиотека):

data class DataClass(
        val a: Int,
        val b: Int,
        val c: Int,
        val d: Int
)

fun main() {
    val instance = DataClass(1, 2, 3, 4)
    val properties = instance::class.memberProperties
    val allValues = ArrayList<Int>() // This list will contain all values of properties
    for (property in properties) {
        val propertyName = property.name
        val propertyValue = property.getter.call(instance)
        println("$propertyName $propertyValue")
        allValues.add(propertyValue as Int)
    }
}

Этот код печатает:

a 1
b 2
c 3
d 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...