我正在尝试使用新的Android数据绑定库,并尝试使用所选值填充微调器时出现以下错误。
错误消息(在Android Studio中编译期间):
错误:任务':app:compileDebugJavaWithJavac'的执行失败。 java.lang.RuntimeException:发现数据绑定错误。 **** /数据绑定错误****消息:无法找到参数类型为java.lang.String的属性'app:selection'的setter。 file:/Users/ove/Code/AndroidStudio/Samples/Receipts/app/src/main/res/layout/dialogfragment_inputamount_db.xml loc:40:29 - 40:44 **** \ data binding error **** < / p>
我的布局文件看起来如下(不完整):
"foo"
那些设法获得数据绑定以使用微调器的人?
奥雅纳
答案 0 :(得分:2)
创建一个BindingUtils类并粘贴setSelection方法
public class BindingUtils
{
@BindingAdapter({"bind:selection"})
public static void setSelection(Spinner spinner, int position)
{
spinner.setSelection(position);
}
}
内部微调器
app:selection="@{receipt.currencyIdx}"
这就是你所要做的一切。
答案 1 :(得分:1)
从AbsSpinner
继承的setter Spinner:setSelection
包含int
参数 - 而不是String
:
public void setSelection(int position)
你应该传递一个位置,而不是选择的值
<Spinner
android:layout_width="wrap_content"
android:id="@+id/currency"
android:layout_height="wrap_content"
android:spinnerMode="dropdown"
android:entries="@array/currency_array"
app:selection="@{receipt.currencyIdx}" />
</LinearLayout>