RxJava:将Map <string,cryptocoin =“”>转换为List <cryptocoin>

时间:2018-02-17 17:55:44

标签: kotlin

我有以下JSON:

{
"Response": "Success",
"Message": "Coin list succesfully returned!",
"BaseImageUrl": "https://www.cryptocompare.com",
"BaseLinkUrl": "https://www.cryptocompare.com",
"Data": {
    "LTC": {
        "Id": "3808",
        "Url": "/coins/ltc/overview",
        "ImageUrl": "/media/19782/ltc.png",
        "Name": "LTC",
        "CoinName": "Litecoin",
        "FullName": "Litecoin (LTC)",
        "Algorithm": "Scrypt",
        "ProofType": "PoW",
        "SortOrder": "2"
    }
    ...
},
"Type": 100

}

为了让Moshi解析data JSON对象,因为它是一个动态列表,我创建了一个类:

data class Data(@Json(name = "Data") val cryptoCoinMap: Map<String, CryptoCoin>)

问题是,我想使用CryptoCoin适配器显示RecyclerView列表,因此我只想显示List,而不是Map。  我一直试图在RxJava中提出一个解决方案,以便能够在CryptoCoin模型中修改Data val为List而不是Map但不幸的是我被卡住了。 有没有人对如何改进这个有更好的方法或想法?

这是我到目前为止所提出的:

var cryptoCoinList = mutableListOf<CryptoCoin>()
    coinRepository
            .getCoinList()
            .concatMapIterable { t: CryptoCoinList -> t.data.cryptoCoinMap.toList() }
            .map { t: Pair<String, CryptoCoin> -> cryptoCoinList.add(t.second) }
            // INSERT TRANSFORMATION HERE
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeBy(onNext = {
                coinListData.postValue(it.second)
            })

提前多多感谢!

0 个答案:

没有答案