LoginSignup
0
0

More than 5 years have passed since last update.

AndroidでdataBindingを実装する

Posted at

dataBindingを有効にする

build.gradle
    dataBinding {
        enabled = true
    }

bindingするクラスを追加

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <!-- Userクラスにバインドする -->
        <variable
            name="user"
            type="com.herokuapp.aqueous_spire_22637.test.User"/>
    </data>
<LinearLayout
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.herokuapp.aqueous_spire_22637.test.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:text="@{String.valueOf(user.id)}"
        android:textAppearance="@style/TextAppearance.AppCompat.Medium"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:text="@{user.name}"
        android:textAppearance="@style/TextAppearance.AppCompat.Medium"/>
</LinearLayout>
</layout>

Userクラスを定義して、ObservableFieldを使う

User.java
import android.databinding.ObservableField;
import android.databinding.ObservableInt;

public class User {
    public ObservableInt id = new ObservableInt();
    public ObservableField<String> name = new ObservableField<>();

    public User(Integer idInt, String nameString){
        id.set(idInt);
        name.set(nameString);
    }
}
MainActivity.java
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        binding.setUser(new User(1, "joji"));
    }
}
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