Now very easy to bind data and it's view (data binding) in android
https://github.com/datanapps/AndroidDataBinding/blob/master/screens/app-debug.apk
Its have just a few steps :
- Data binding can lead to faster development times
- Faster execution times (more then findviewbyid)
- Stronger readability (More readable and maintained code).
- Remove boilerplate code
- Auto generated class (it's true it will increase the app size)
- Hard to debug - depends, like readability, of what you are used to.
android {
dataBinding.enabled = true
}
activity_book_detail.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
>
<data>
<variable name="book" type="com.example.androiddatabinding.Book"/>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".BookDetailActivity"
>
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{book.name}"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{book.email}"
android:textSize="20sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/name" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
Model : Book.class
package com.example.androiddatabinding;
public class Book {
private String name;
private String email;
public Book(String name, String email) {
this.name = name;
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Activity : BookDetailActivity.class
public class BookDetailActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_book_detail);
ActivityBookDetailBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_book_detail);
Book book = new Book("Book", "book@gmail.com");
binding.setBook(book);
}
}