为什么我的数据绑定不适用于 HashMap?

问题描述

我有这样的布局变量:

<variable
name="string"
type="....UtilsClass" />

然后我想访问此类 HashMap 并通过键获取项目:

<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:title="@{string.strings.get(9167)}"
app:titleTextAppearance="@style/Toolbar.TitleText"
app:titleTextColor="@color/white" />

但是当应用程序运行时,我在工具栏中看不到任何字符串。另一方面,当我想直接从活动中设置这个字符串时,我设法做到了。为什么会发生,我该如何解决这个问题?还是完全不可能?

解决方法

我设法找到了非常好的解决方案。我们有这样的变量:

<data>
  <import type="java.util.HashMap"/>
  <variable name="map" type="HashMap&lt;Integer,String&gt;"/>
</data>

在此变量的片段/活动集数据中:

viewBinding!!.map = our map

例如在 TextView 中获取数据:

android:text="@{map.get(11080)}"

设置一些其他类型数据的示例:

<import type="java.util.Map"/>
<import type="java.util.ArrayList"/>
<variable name="list" type="ArrayList&lt;String&gt;"/>
<variable name="map" type="Map&lt;String,String&gt;"/>
<variable name="arrays" type="String[]"/>

有用的link

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...