Ниже код будет работать для вас. в TextView я использовал пользовательский атрибут, который мы должны упомянуть в BindingAdapter,
Binding Adapter будет иметь функцию верхнего уровня, как упомянуто ниже.
<layout>
<data>
<variable
name="project"
type="com.mvvm_architecture.model.Project" />
<variable
name="isLoading"
type="Boolean" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Project Language -->
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_created_at"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:fontFamily="sans-serif-light"
android:gravity="center"
android:textColor="@android:color/black"
android:textSize="14sp"
app:formattedText="@{project.created_at}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
@BindingAdapter("app:formattedText")
fun formattedText(view: View, text: String?) {
(view as AppCompatTextView).text = if (text == null || text.isEmpty()) {
""
} else {
val simpleDateFormat = SimpleDateFormat(Constants.DATE_FORMAT,Locale.getDefault())
val date = simpleDateFormat.parse(text)
DateUtils.getRelativeTimeSpanString(date?.time ?: 0).toString()
}
}