Я работаю над новым проектом и только начал использовать Databinding.Я слышал, как люди говорят о сокращении кода. У меня есть фрагмент RecyclerView.У меня есть простой ConstraintLayout, в котором у меня есть 3 TextViews.Это в моем адаптере для RecyclerView.
Этот дополнительный + "nazv" является просто примером, и я мог бы использовать расширение строки.
fun bind(item: Mkdo) {
binding.txtMkdoNaziv.text = item.nazv+" nazv"
binding.txtMkdoPost.text = item.post
binding.txtmkdoPostNaziv.text = item.postNaziv
}
ConstraintLayout для отдельной строки RecyclerView (удаленные свойства позиционирования)
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintRowMkdo"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/txtMkdoNaziv"/>
<TextView
android:id="@+id/txtMkdoPost"/>
<TextView
android:id="@+id/txtmkdoPostNaziv"/>
</androidx.constraintlayout.widget.ConstraintLayout>
Работает просто отлично.Если я хочу преобразовать его в привязку данных, я должен добавить:
fun bind(item: Mkdo) {
binding.mkdo=item
binding.executePendingBindings()
}
и BindingAdapter
@BindingAdapter("setNazv")
fun TextView.setNazv(item:Mkdo?){
item?.let {
text="${item.nazv} nazv"
}
}
ConstraintLayout для отдельной строки RecyclerView (удаленные свойства позиционирования) с привязкой данных
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintRowMkdo"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/txtMkdoNaziv"
app:setNazv="@{mkdo}""/>
<TextView
android:id="@+id/txtMkdoPost"
android:text="@{mkdo.post}"/>
<TextView
android:id="@+id/txtmkdoPostNaziv"
android:text="@{mkdo.postNaziv}"/>
</androidx.constraintlayout.widget.ConstraintLayout>
Это делает constraintRowMkdo повторно используемым и, на мой взгляд, добавляет больше работы, чем без него.
Также, если у меня есть форматирование строки, мне нужно иметь его в двух местах: строку Extension и BindingAdapter.Я могу повторно использовать Extension, но он все еще зависит от того, кто его ставит.
Какие у вас проблемы с этим?Я что-то пропустил?Есть ли дополнительные преимущества его использования?Спасибо