问题描述
我有这样的布局变量:
<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<Integer,String>"/>
</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<String>"/>
<variable name="map" type="Map<String,String>"/>
<variable name="arrays" type="String[]"/>
有用的link