如何将DataBindingUtil与Android微调器一起使用?

时间:2015-10-07 15:24:29

标签: java android

我正在尝试使用新的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"

那些设法获得数据绑定以使用微调器的人?

奥雅纳

2 个答案:

答案 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>