Я использую приведенный ниже код, реализующий привязку данных с Observable
Наблюдаемые
class Model() : BaseObservable() {
private var date :Long?=null
private var from :String?=null
private var to :String?=null
@Bindable
fun getFrom(): String? {
return from
}
@Bindable
fun getDate(): Long? {
return date
}
@Bindable
fun getTo(): String? {
return to
}
fun setFrom(data: String) {
from=data
notifyPropertyChanged(BR.from);
}
fun setTo(data: String) {
to=data
notifyPropertyChanged(BR.to)
}
fun setDate(data: Long) {
date=data
notifyPropertyChanged(BR.date)
}
fun formatDate():String? {
return date?.let { it1 -> TBDate(it1).format("dd MMM, yyyy") }
}
}
xml's view
<android.support.design.widget.TextInputLayout
android:id="@+id/tip_date"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_16"
android:layout_marginRight="@dimen/dp_18"
app:layout_constraintBottom_toBottomOf="@+id/today"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/today"
app:layout_constraintTop_toTopOf="@+id/today">
<android.support.design.widget.TextInputEditText
android:id="@+id/et_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/date"
android:text="@{model.formatDate()}"
android:onClick="@{() -> handler.onClickDate()}"
android:editable="false"
android:focusableInTouchMode="false"
tools:text="12 Feb, Wednesday" />
</android.support.design.widget.TextInputLayout>
Java
override fun onClickXYZ () {
val calendar = Calendar.getInstance()
calendar.add(Calendar.DATE, 1)
viewModel.setDate(calendar.timeInMillis)
}
Ожидаемое поведение -Когда значение даты Observable
изменяется с помощью setDate()
, представление должно обновлять значение даты в правильном формате
Фактическое поведение -Просмотр не обновляет значение даты. Наблюдаемый setDate()
вызывается, но formatDate()
не вызывается