【问题标题】:How to get values from an object in a hashmap in kotlin android using mvvm如何使用 mvvm 从 kotlin android 的哈希图中的对象中获取值
【发布时间】:2021-01-04 02:58:07
【问题描述】:

我的数据/模型类中有一个哈希图,因为对象键是动态的

ApiResponse

data class ApiResponse(
val amount: String,
var rates: HashMap<String, Rates> = HashMap())

费率

data class Rates(
val currency_name: String,
val rate: String,
val rate_for_amount: Double)

查看

 val map: Map<String, Rates> map = result.data.rates

从这里得到的数据就是这样的格式

{AFN=Rates(currency_name=Afghani, rate=1.0000, rate_for_amount=5.0)}

现在我有 2 个问题。

1 我正在使用 MVVM,我的模型(Rates)是否直接与我的视图交互?如果否,我如何重构干净的架构。

2我如何根据得到的数据/结果得到键rate_for_amount的值,这是一个对象

【问题讨论】:

  • 请不要添加 android studio 标签,除非您特别询问 IDE 的功能

标签: android kotlin mvvm hashmap


【解决方案1】:

第一季度

  • 不,您应该使用视图模型从您的视图中访问模型。要了解更多关于正确方法的信息,您应该read this

第二季度

  • 如果要从动态键中获取 rate_for_amount 的值,则可以使用循环获取键,然后从该键中获取值。

fun getValues() {
   map.keys.forEach {
      val rateForAmount = map[it]?.rate_for_amount
   }
 }

如何将地图的值从视图模型绑定到视图的示例

  1. 您必须在视图中添加绑定。

  2. 在视图的数据标签中添加视图模型变量。

  3. 在您的视图模型中,添加一个MutableLiveData 变量。

    val text = MutableLiveData&lt;String&gt;()

  4. 现在在文本视图的 setText 标签中调用这个变量(你想在其中显示值)。

    &lt;TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{viewModel.text}"/&gt;

  5. 更新视图模型的文本变量的值。 (我只更新视图模型的值)

fun getValues() {
map.keys.forEach {
val rateForAmount = map[it]?.rate_for_amount
text.value = rateForAmount.toString()
viewModel.text.value = rateForAmount.toString()
}
}

【讨论】:

  • 工作。感谢第一。如何在我的 viewModel 中实现地图并在我的视图中使用它。只是一个例子。我正在为 DI 使用 HILT
  • @Ibramazin 检查答案的新编辑。我认为这对你有用!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-22
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
相关资源
最近更新 更多