我的Android绑定库有问题。当我使用属性更改' _all'一切正常,但是当我指定字段时它不起作用。 我的问题是为什么? :)
public class Person extends BaseObservable{
private String name;
@Bindable
public String getName(){
return this.name;
}
//IT WORKS
public void setName(String name){
this.name = name;
notifyPropertyChanged(BR._all); //<- difference
}
//IT DONT WORK
public void setSurname(String name){
this.name = name;
notifyPropertyChanged(BR.name); //<- difference
}
我的xml文件:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="person"
type="com.myapp.Person" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{person.getName()}" />
</LinearLayout>
</layout>
答案 0 :(得分:0)
问题是您使用方法getName()而不是属性name
。你应该像这样绑定它:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{person.name}" />
_all
起作用的原因是因为数据绑定认为整个对象都是无效的,然后也是重新评估的方法。