如何使用新的dataBinder插件进行双向绑定(从UI到数据,从数据到UI)?
非常感谢!
答案 0 :(得分:2)
我们还没有这个,也许是在v1之后。不确定你的用例是什么,但是我们已经为每个带有id的View创建了字段,所以当你需要数据时,你可以使用该视图来获取它。
e.g。如果你有<EditText android:id="@+id/mytext"/>
生成的绑定类将具有public final EditText mytext;
。
答案 1 :(得分:0)
这是一个简单的例子:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="bind" type="com.example.app.MainActivity.Bind"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onTextChanged="@{bind.textChanged}"
android:text="@{bind.text}"/>
</LinearLayout>
</layout>
和活动代码(使用retrolambda):
public class MainActivity extends AppCompatActivity {
private final Bind bind = new Bind();
public class Bind {
public ObservableField<String> text = new ObservableField<>();
public TextViewBindingAdapter.OnTextChanged textChanged = (s, start, before, count) -> {
System.out.println("New value: " + s);
};
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
binding.setBind(bind);
}
}