TextViewをJodaTimeの日付にバインドしたいので、日付の値がプログラムによって変更されるとTextViewが変更されます。私はそれを初めて表示することに成功しましたが、日付が変更された場合、ビューは更新されません。bind TextView to Date
のTextView:
<TextView
android:id="@+id/day"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{mainViewModel.day}" />
のViewModel:
public class RoomListViewModel extends Observable{
private LocalDate day;
public String getDay(){
return day.toString("dd/MM/yyyy");
}
public void previousDay() {
day = day.plusDays(1);
setChanged();
notifyObservers();
}
public void nextDay() {
day = day.minusDays(1);
setChanged();
notifyObservers();
}
私は何をしないのですか?
私のViewModelはすでにjava.util.Observableを拡張し、私は私の設定でそれを行う方法を見ることができません。私はdatabinding.Observableを実装する場合、私はaddOnPropertyChangedCallbackを使用してプロパティの変更を聞く必要があると思いますが、それを行う方法は? –
さて、アンドロイドデータバインディングは 'java.util.Observable'では動作しません。これは 'android.databinding.Observable'で動作します。これを拡張する代わりに、既に実装が必要な 'BaseObservable'から拡張してください。それでは 'notifyPropertyChanged(BR.day);を呼び出してください。 – mlyko
はい、残念ながらこのアプリはそのように構築されています。私はこの特定のケースのための迅速な修正が必要でした。とにかく、有益な情報ありがとう: –