【Java】【Android】findViewByIdではなくDataBindingでlayoutを制御する

こんにちは、kazuです。
本日はfindViewByIdではなくDataBindingでレイアウトを制御する方法を記事にしていこうと思います!

findViewByIdとDataBindingと違い

両者はlayoutの制御に使用されたりしています。
例えばボタンをクリックした時に文字色を変える時に使用したりします。
では何が違うかと言いますとfindViewByIdはAPIレベル1から存在するいわゆる最初から使用されている方法ですね!
当然昔から存在するので DataBindingより情報が多くあります。
ただしデメリットとしてはコード量が多くなってしまうのかなと感じています。
当然開発をするとボタンの量が多いアプリが存在すると思います(電卓アプリとか)その場合はコード量が多くなるのかなと思います。
DataBindingはfindViewByIdの後続になります。
今主流はDataBindingになります!
メリットとしてはコード量がボタンが増えてもコードがすっきりしているのではないかなと思います。
デメリットとしてはAndroid開発に慣れていない人には少し複雑かもしれません。
gladleファイルの修正など使用するのに手順があります。
ちなみにですが、project作成時はfindViewByIdを使用しています!

実際に確認してみよう!

百聞は一見にしかずですコードを確認してみましょう!
今回のコードはDataBindingです。
findViewByIdはサンプルコードは作成しません。
どうしてもみたいならAndroidprojectを作成してください。findViewByIdでHelloWouldを表示していたのでそれで確認できます。笑

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       // Binding処理
       ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());
       View view = binding.getRoot();
       setContentView(view);
        
       // ボタンをクリックした時の処理
       binding.button.setOnClickListner(new View.OnClickListener(){
          @Override
          public void onClick(View v) {
            // テキストのサイズを変更する
            binding.text.setTextSize(30.0f);
          }
       }
    }
}
<!-- Bindingをするときレイアウトタグの中に入れる -->
<layout>

  <androidx.constraintlayout.widget.constraintlayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity">
    <TextView
      android:id="@+id/text" 
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:textSize="10sp"
      android:text="テキストサイズが変更される"/>
    <button
      android:id="@+id/button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:text="テキストサイズを変える"
      android:textstyle="bold"/>
  </androidx.constraintlayout.widget.constraintlayout>
</layout>
android {
    ・
    ・
    // gladleファイルに追加する
    dataBinding {
        enabled = true
    }
    ・
    ・
}

上記のような形がBindingになります。
コード上でも記載しましたがbindingを使うのは
①java(今回)上でinflateする。
②xmlで<layout>タグの中にテキストタグやボタンタグを入れる
③gladleに設定を追加する。
の3つのステップがあります。簡単に言うとですが。。

最後に

いかがでしたでしょうか?
まだfindViewByIdを使用している人はDataBindingを導入してみてください。
あ、ちなみに実務の開発では割とDataBindingが主流になってきています。
古いアプリの修正業務などは導入していないかもしれません。。
ですが導入自体は難しくないのかなと思います。最後までご覧いただきありがとうございました。