- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
两个主要问题是:
getVariable("variableName")
的方法它将查找一个变量并返回它,如果不存在具有该名称的变量,则返回 null。所以更明确地说:如果我不知道我的 ViewDataBinding 的类型, 他们是获取其变量的方法还是我必须知道它的类型?
这是它的实际工作方式:
<layout>
<data>
<variable
android:name="myVaribale"
android:type="String"/>
</variable>
</data>
<RelativeLayout
android:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@{myVariable}"/>
</RelativeLayout>
<layout>
我膨胀它的一个实例 ViewDataBinding :
MyLayoutBinding binding = (MyLayoutBinding) DataBindingUtil.inflate(inflater, R.layout.my_layout, root, false);
我可以通过调用适当的方法来获取它的变量:
String myVariable = binding.getMyVariable();
这就是当我们知道 ViewDataBinding 的类型 时如何获取变量的方法.
我的问题在这里:
假设我有 3 个名为 my_layout_1
的布局, my_layout_2
, my_layout_3
这 3 种布局被 <layout>
包围标签。这 3 种布局也有相同的变量 ( myVariable
)。
下面是布局:
我的布局_1
<layout>
<data>
<variable
android:name="myVariable"
android:type="String"/>
</variable>
</data>
<RelativeLayout
android:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@{myVariable}"
style="@style/my_style_1"/>
</RelativeLayout>
<layout>
我的布局_2
<layout>
<data>
<variable
android:name="myVariable"
android:type="String"/>
</variable>
</data>
<RelativeLayout
android:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@{myVariable}"
style="@style/my_style_2"/>
</RelativeLayout>
<layout>
my_layout_3
<layout>
<data>
<variable
android:name="myVariable"
android:type="String"/>
</variable>
</data>
<RelativeLayout
android:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@{myVariable}"
style="@style/my_style_3"/>
</RelativeLayout>
<layout>
所以不同的布局代表具有不同风格的文本(我知道它可以通过其他方式实现,但目的只是解释为什么我需要这个功能 getVariable(variableName)
。
现在想象一下,我有一个名为 my_text_container
的布局它将随机包含 3 种布局之一。
我的文本容器
<layout>
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<layout>
所以我会通过做这样的事情来添加一个文本(同样,它只是为了演示目的):
MyTextContainerBinding textContainerBinding = (MyTextContainerBinding) DataBindingUtil.inflate(inflater, R.layout.my_text_container, root, false);
int textLayoutRes;
int randomNumber = generateNumberBetween0and2();
switch(randomNumber) {
case 0: textLayoutRes = R.layout.my_layout_1;
break;
case 1: textLayoutRes = R.layout.my_layout_2;
break;
case 2: textLayoutRes = R.layout.my_layout_3;
break;
}
textContainerBinding.getRoot().addView(DataBindingUtil.inflate(inflater, textLayoutRes, root, false));
最后我想检索 myVariable
但我不知道它是布局 1、2 还是 3。基本上现在可以做的是使用 instanceof运算符检查它是否是一个类型 MyLayoutBinding1
, MyLayoutBinding2
或 MylayoutBinding3
.但正如我所说,这个用例仅用于演示目的,我可以有 999 种不同的布局。
所以我想做的是:
ViewDataBinding myLayout = DataBindingUtil.getBinding(textContainerBinding.getRoot().getChildAt(0));
String myVariable = myLayout.getVariable("myVariable");
if(myVariable != null)
Log.d(TAG, "myLayout was MylayoutBinding1 or myLayoutBinding2 or myLayoutBinding3");
else
Log.d(TAG, "mylayout was not one of the 3 layouts");
对于这篇(非常)长的帖子,我们深表歉意,但感谢您阅读它并感谢您以后的任何回答!
最佳答案
我不确定我是否明白了,但我所做的是在布局中声明一个变量,如下所示:
<data>
<variable
name="variableName"
type="bla.bla.VariableType"/>
</data>
然后首先在 onCreate 中获取布局绑定(bind):
binding = DataBindingUtil.inflate(inflater, R.layout.your_layout, container, false);
然后你应该在代码中发送一个变量到布局:
binding.setVariableName(yourVariable);
然后你可以像这样检索它:
binding.getVariableName();
关于android - ViewDataBinding getVariable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37591320/
不知道之前有没有问过(我找了没找到) 下面2个代码块有区别吗? 1: // Let's say we want to get variable from non-static object Objec
两个主要问题是: 为什么 ViewDataBinding没有类似 getVariable("variableName") 的方法它将查找一个变量并返回它,如果不存在具有该名称的变量,则返回 null。
我是编码新手。所以我尽量保持简单。我的目标是读取 uefi 变量(例如供应商/序列号)并将其打印回来。我的代码将无法正常工作。我正在使用 gnu-efi。 include "efi.h" includ
本文整理了Java中us.ihmc.yoVariables.registry.YoVariableRegistry.getVariable()方法的一些代码示例,展示了YoVariableRegist
本文整理了Java中us.ihmc.yoVariables.variable.YoVariableList.getVariable()方法的一些代码示例,展示了YoVariableList.getVa
本文整理了Java中us.ihmc.yoVariables.variable.YoVariableList.getVariables()方法的一些代码示例,展示了YoVariableList.getV
本文整理了Java中us.ihmc.yoVariables.dataBuffer.YoVariableHolder.getVariable()方法的一些代码示例,展示了YoVariableHolder
我在以下布局中使用 DataBinding。我在绑定(bind)对象上调用 setViewModel() 方法。如果我立即调用 binding.getViewModel(),它会返回 null。见下面
本文整理了Java中us.ihmc.robotics.dataStructures.registry.YoVariableRegistry.getVariable()方法的一些代码示例,展示了YoVa
本文整理了Java中gov.sandia.cognition.statistics.distribution.YuleSimonDistribution.getVariance()方法的一些代码示例,
我是一名优秀的程序员,十分优秀!