【问题标题】:How to access the elements of the LiveData list "Livedata<List<Model>> in Kotlin?如何在 Kotlin 中访问 LiveData 列表“Livedata<List<Model>>”的元素?
【发布时间】:2019-08-25 15:42:14
【问题描述】:

在 Java 中,我们使用 books[0] 访问 Livedata&lt;List&lt;Book&gt;&gt; 书籍的第一个元素,在 Kotlin 中如何做到这一点?

我已经尝试了一切。

//Java 代码 books[0];

//科特林 //books[0] 抛出错误

未解决的参考。由于接收器类型不匹配,以下候选均不适用: @InlineOnly 公共内联运算符 fun Map.get(key: Int): Category?在 kotlin.collections 中定义

【问题讨论】:

  • "在 Java 中,我们使用 books[0] 访问 Livedata> 书籍的第一个元素" -- books 到底是什么? booksLiveData&lt;List&lt;Book&gt;&gt; 吗? booksList&lt;Book&gt; 吗? books 是别的吗?因为books[0] 适用于List&lt;Book&gt;,但不适用于LiveData&lt;List&lt;Book&gt;&gt;。您可能希望编辑您的问题并提供一个更完整的示例来说明您如何声明 books 以及它的来源。
  • 如果booksLiveData&lt;List&lt;Book&gt;&gt; 那么你可以使用books.value?.get(0) 作为第一个元素。但应观察 LiveData 以books.observe(viewLifecycleOwner, Observer { books -&gt; books[0]}) 访问数据。

标签: java android kotlin android-livedata android-jetpack


【解决方案1】:

你可以试试 books.get(0)

Kotlin 允许您在类型上使用一些运算符,一个是中缀,例如 +,因为它位于表达式/值之间。我认为错误是告诉您无法使用数组表示法访问books

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多