1
У меня проблема с библиотекой привязки Android. Когда я использую свойство changed '_all', все работает, но когда я указываю поле, он не работает. Мой вопрос: почему? :)Android Binding - изменение свойств
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>
Хорошо, я замечаю это, но что, если я хочу использовать геттер? Пример изменения значения -> формат возврата («Ваше имя% s», имя); Единственный способ использовать все уведомления? – linean
В этом конкретном случае вы хотите использовать форматирование строк: '@ {@ string/yourName (name)}'. Но если вы передадите аргумент, это также приведет к недействительности метода, поэтому вы можете использовать: '@ {MyStringFormatter.yourName (user.name)}' –