Я хочу использовать привязку данных с моделью представления, как объяснено здесь
Итак, вот выдержки:
расположение:
<data class="FragmentEditPersonDataBinding">
<import type="com.unludo.interview.persons.edit.Converter"/>
<variable
name="viewmodel"
type="com.unludo.interview.persons.edit.PersonEditViewModel" />
[...]
<EditText
android:id="@+id/editBirthday"
android:inputType="date"
android:text="@={Converter.dateToString(viewmodel.birthday)}"
Преобразователь:
object Converter {
@InverseMethod("stringToDate")
@JvmStatic
fun dateToString(
view: EditText, oldValue: String,
value: Date
): String {
val sdf = SimpleDateFormat("dd/MM/yyyy", Locale.FRANCE)
return sdf.format(value)
}
@JvmStatic
fun stringToDate(
view: EditText, oldValue: String,
value: String
): Date {
val sdf = SimpleDateFormat("dd/MM/yyyy", Locale.FRANCE)
return sdf.parse(value)
}
}
ViewModel:
class PersonEditViewModel {
var birthday: Date = GregorianCalendar(1993, 5, 19).time
...
Теперь я получаю эту ошибку при сборке:
e: [kapt] An exception occurred: android.databinding.tool.util.LoggedErrorException:
Found data binding errors.
****/ data binding error ****msg:cannot find method dateToString(java.util.Date)
in class com.unludo.interview.persons.edit.Converter
[...]
- 134:78 ****\ data binding error ****
Я использую последнюю альфа-версию привязки данных, поэтому мне интересно, может ли быть ошибка в lib.
спасибо за любую помощь!
--- обновление
Если я напишу конвертер таким образом, он будет скомпилирован, но это не соответствует документации. Есть идеи почему?
object Converter {
@InverseMethod("stringToDate")
@JvmStatic
fun dateToString(
value: Date
): String {
val sdf = SimpleDateFormat("dd/MM/yyyy", Locale.FRANCE)
return sdf.format(value)
}
@JvmStatic
fun stringToDate(
value: String
): Date {
val sdf = SimpleDateFormat("dd/MM/yyyy", Locale.FRANCE)
return sdf.parse(value)
}
}