我有一个名为 ImageStore 的 Singleton 类,其中我声明了一个 Hashmap,其中每个键的值是一个 Pair,如下所示
object ImageStore {
val imagesNamesMap = hashMapOf(
R.drawable.africa to Pair("Africa","Afrika"),
R.drawable.asia to Pair("Asia","Azija"),
R.drawable.europe to Pair("Europe","Europa"),
R.drawable.antartica to Pair("Antarctica","Antarktida"),
R.drawable.airplane to Pair("Aeroplane","Lėktuvas"),
R.drawable.apple1 to Pair("Apple","Obuolys"),
R.drawable.key to Pair("Key","raktas"),
R.drawable.sleep to Pair("to sleep","miegoti)"
).toList().shuffled().take(4)).toMap()
}
我有一个 Fragment,我试图在其中访问 Imagestore 的实例以及 Pair 中的两个值,因此我已将此代码放入我的 Fragment 类中,如下所示。
val shuffledImageResources = ImageStore.imagesNamesMap.keys.toList().shuffleList().toMutableList()
val shuffledImageNames1: List<Pair<String, String>> = shuffledImageResources.mapNotNull { it ->
val pair = ImageStore.imagesNamesMap[it]
pair?.let { Pair(pair.first, pair.second) } //
}
这里,当我单击pair.first 中的first 时,pair.first 和pair.second 中的first 和second 给出错误,它给我以下消息,如下图所示
imagesNamesMap
中值的推断类型是Any
而不是Pair
。请尝试如下:
val imagesNamesMap = hashMapOf(
0 to Pair("Africa","Afrika"),
1 to Pair("Asia","Azija"),
2 to Pair("Europe","Europa"),
3 to Pair("Antarctica","Antarktida"),
4 to Pair("Aeroplane","Lėktuvas"),
5 to Pair("Apple","Obuolys"),
6 to Pair("Key","raktas"),
7 to Pair("to sleep","miegoti")
).toList().shuffled().take(4).toMap()
我在
)
之后删除了 take(4)
,并将 )
与 "
中的
Pair("to sleep","miegoti)"
交换