如何从 LiveData 中获取最大值的对象?
How to get object of Maximum value from LiveData?
我有市场数据的实时数据。我想要一个具有最高 'volume' 的市场数据对象。这里volume是字符串值("277927.5793846733451135"),也可以为null。
我正在使用下面的代码来实现这一点。但是,它不起作用。
viewModel.marketlist.observe(this as LifecycleOwner, { marketdata ->
val marketData = marketdata.getOrNull()
if(marketData !=null) {
val mData: MarketData? = marketData.marketData?.maxByOrNull { checkNotNull(it.volume) }
if (mData != null) {
binding.textViewPrice.text = mData.price
}
}
else {
//TODO
}
})
如有任何帮助,我们将不胜感激!
你应该可以这样做:
viewModel.marketList.observe(viewLifecycleOwner) { marketData ->
val maxData = marketData.getOrNull()?.marketData?.let { dataValues ->
dataValues.maxByOrNull { it.volume?.toDoubleOrNull() ?: -1.0 }
}
if (maxData != null) {
binding.textViewPrice.text = maxData.price
}
}
我稍微清理了 observe
调用,然后立即用我的 let { ... }
块检查 marketData.getOrNull().marketData
是否为 null。
如果您有 marketData
(内部那个),它会安全地调用 maxByOrNull { it.volume }
。
我有市场数据的实时数据。我想要一个具有最高 'volume' 的市场数据对象。这里volume是字符串值("277927.5793846733451135"),也可以为null。
我正在使用下面的代码来实现这一点。但是,它不起作用。
viewModel.marketlist.observe(this as LifecycleOwner, { marketdata ->
val marketData = marketdata.getOrNull()
if(marketData !=null) {
val mData: MarketData? = marketData.marketData?.maxByOrNull { checkNotNull(it.volume) }
if (mData != null) {
binding.textViewPrice.text = mData.price
}
}
else {
//TODO
}
})
如有任何帮助,我们将不胜感激!
你应该可以这样做:
viewModel.marketList.observe(viewLifecycleOwner) { marketData ->
val maxData = marketData.getOrNull()?.marketData?.let { dataValues ->
dataValues.maxByOrNull { it.volume?.toDoubleOrNull() ?: -1.0 }
}
if (maxData != null) {
binding.textViewPrice.text = maxData.price
}
}
我稍微清理了 observe
调用,然后立即用我的 let { ... }
块检查 marketData.getOrNull().marketData
是否为 null。
如果您有 marketData
(内部那个),它会安全地调用 maxByOrNull { it.volume }
。