0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

(Android) DataBindingを使って静的テキストを表示させてみる

Last updated at Posted at 2020-12-28

はじめに

DataBindingの勉強として記録しておく。
今回はテキストを表示するだけの初歩中の初歩。

DataBindingの導入

appのgradleに以下を追加

build.gradle
android {
    dataBinding {
        enabled = true
    }
}

バインドするクラス(User)を用意

User.java

public class User {
  private String name;
  private String email;

  public User(String name, String email) {
    this.name = name;
    this.email = email;
  }

  public String getName() { return name; }
  public String getEmail() { return email; }
}

layout設定

ポイント

  • xmlファイルのルートをlayoutタグでくくる。
     ⇒ 自動的にxmlファイル名に応じたBindingクラスが作られる。
     例: activity_main.xml => ActivityMainBinding
  • 使用するオブジェクトをdataタグ内で記述
    • variable nameは任意の名前
    • type = "com.example.プロジェクト名(小文字).バインドするクラス名"(今回はUser)
  • Viewからバインドオブジェクトのプロパティにアクセスするため、@{}でくくって記述
    • 例: @{user.name}でUser.javaのgetName()にアクセス
    • @{}の中身はnullを許容するようになっており、nullの場合でもNullPointerExceptionが発生することはない。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Binding Objects -->
    <data>
      <!--  userという名前(任意)で、Userクラスオブジェクトとの結びつきがされる  -->
      <variable name="user" type="com.example.databinding.User" />
    </data>

    <!-- View -->
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <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>

オブジェクトをバインドさせる

MainActivity.java
public class MainActivity extends AppCompatActivity {

    private User user = new User("Taro", "taro@test.com");

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

        // Bindingのインスタンスを取得
        ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        // xmlのuserとMainActivityのuserを紐付ける
        binding.setUser(user);
    }

おわりに

次は動的に表示させる実装をしてみたいと思う。
next: DataBindingを使ってテキストを動的に変更する

参考サイト

https://qiita.com/Omoti/items/a83910a990e64f4dbdf1#step0-%E5%B0%8E%E5%85%A5
ありがとうございました

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?