【发布时间】:2015-07-11 18:34:53
【问题描述】:
是否可以在 Android 中为 SeekBar 或 ProgressBar 使用数据绑定?我有这个数据元素:
<data>
<variable
name="foo"
type="com.example.Foo" />
</data>
如果我在 TextField 中引用变量 foo.bar(它是一个 int),它会按预期工作:
<TextView
android:text="@{String.valueOf(foo.bar)}"
[...]
我试图做的是:
<SeekBar
android:progress="@{foo.bar}"
[...]
但它未被识别。 (只要我在引号之间写了一个“@”,它就在编辑器中变红了)。还有另一种数据绑定方式吗?
【问题讨论】:
-
嗯,它应该可以工作。这可能是一个 IDE 突出显示错误。你试过编译吗?
-
我今天了解到,我应该总是尝试编译 :) 它有效!谢谢,yigit!
-
但是,嗯,它确实调用了 foo.getBar() 方法将自己设置在正确的位置。但它似乎从未调用 foo.setBar() 方法,因此该值从未在我的代码中更新。它还需要一个 SeekBarChangeListener,还是什么?
-
我们没有双向数据绑定。正确和部分成本很高是很棘手的,我们正在努力使数据绑定尽可能接近您将编写的代码(+优化)。我们可以在 v1 之后添加双向绑定。
-
RC1 刚刚发布,虽然您没有双向数据绑定,但您现在可以轻松绑定到处理程序方法。 android:onProgressChanged="@{handlers.progressChanged}" 您的处理程序类有一个 progressChanged 方法,具有相同的参数和 onProgressChanged 的返回值。
标签: android data-binding android-seekbar