Bài 27: Databinding trong Android - Lập trình Android cơ bản

Đăng bởi: Admin | Lượt xem: 3228 | Chuyên mục: Android


1. Giới thiệu 

Android DataBinding cung cấp một cách để liên kế giao diện người dùng với logic cho phép các giá trị UI tự động cập nhật mà không cần sự can thiệp thủ công. Điều này làm giảm rất nhiều mã boilerplate trong logic mà chúng ta thường viết để đồng bộ hóa giao diện người dùng khi có dữ liệu mới. DataBinding là một trong những thành phần kiến trúc android được đề xuất bởi android. Thư viện giúp các lập trình viên không phải viết quá nhiều code để “ghép dữ liệu” vào các component trên file layout XML nữa.
Trong bài viết này, chúng ta sẽ tìm hiểu những điều cơ bản của DataBinding.

2. Khái niệm cơ bản về DataBinding

2.1 Enabling DataBinding

Để sử dụng được thư viện Data Binding, bạn cần phải thỏa mãn 3 điều kiện sau:
  1. Android Support Library > 15.0 (cần để download thư viện này trên maven/jcenter, hoặc nếu không muốn sử dụng Maven thì download package Android Support Library > 23 (toàn bộ thư viện offline)
  2. Android M SDK 23.0 và build tool của nó.
  3. Android Studio 1.3 (hiện Google chỉ còn support Android Studio nên bạn nào dùng Eclipse chắc sẽ phải đợi các nhóm làm Tool support)
Sau đó bạn cần Include thư viện Data Library vào trong hệ thống.
app/build.gradle
android {
    dataBinding {
        enabled = true
    }
 
    compileSdkVersion 27
 
    defaultConfig {
        applicationId "info.androidhive.databinding"
        minSdkVersion 16
        // ..
    }
}

3. Binding dữ liệu

Bây giờ chúng ta sẽ bắt đầu bằng việc tạo 1 layout trong file xml. Ở đây mình sử dụng luôn file activity_main.xml để làm ví dụ luôn.
Ở đây chúng ta sẽ có 1 Object User để lưu thông tin của 1 user. Object gồm có 2 thuộc tính là firstName và lastName.
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data>

        <variable
            name="user"
            type="com.vncoder.databinding.User" />
    </data>

    <LinearLayout 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"
        android:orientation="vertical"
         tools:context=".MainActivity"
        tools:showIn="@layout/activity_main">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{user.name}" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{user.email}" />

    </LinearLayout>
</layout>
File User.java
package com.vncoder.databinding;

public class User {
    String name;
    String 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;
    }
}
Giờ ta quay lại file MainActivity.java
Hàm MainActivity.java
package com.vncoder.databinding;

import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;

import android.os.Bundle;

import com.vncoder.databinding.databinding.ActivityMainBinding;


public class MainActivity extends AppCompatActivity {

    private User user1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ActivityMainBinding binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
        user1 = new User();
        user1.setName("vncoder");
        user1.setEmail("vncoder.vn");
        binding.setUser(user1);
    }
}
Khi bạn thêm thẻ
<data>

        <variable
            name="user"
            type="com.vncoder.databinding.User" />
    </data>
vào trong file activity_main.xml tức là bạn đã khai báo layout này sẽ sử dụng DataBinding để hiển thị dữ liệu thì Android Studio sẽ tự động sinh ra cho bạn class ActivityMainBinding công việc này hoàn toạn tự động và bạn chỉ cần sử dụng class này mà không cần khai báo gì trong đó.
Phương thức binding.setXXX(Object) là để set dữ liệu hiển thị lên layout.
  1. XXX ở đây sẽ tương ứng với thuộc tính name mà bạn đã khai báo ở thẻ <variable>
Và bây giờ các bạn có thế Run project để xem thành quả.
Đây là cách Binding dữ liệu cơ bản nhất, tại đây bạn binding 1 dữ liệu đã có sẵn để hiển thị lên view.  
Bài tiếp theo: Toolbar, ActionBar trong lập trình Android >>
vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!