〈kotlin〉Android studio使い方メモ2:View Binding

金宏和實さんの「作ればわかる!Androidプログラミング kotlin対応」を参考に
Android studioでkotlinを使ってAndroidアプリ作成。


MainActivity.ktでプログラムを作成する時、
activity_main.xml内でText ViewやButtonに指定したidを使いたい。

本に載っているsynthetic importは廃止されたみたい

参考書内では、

import kotlinx.android.synthetic.main.activity_main.*

とするだけで
activity_main.xml内で設定したidをいきなり変数として使っていたが、これはできなかった。


findViewByIdを使う
var btn : Button = findViewById(R.id.button)

このコードで「button」が入っているところに設定したid名を入れる。
ただ、使用したいidの数だけfindViewByIdを書く必要があり面倒。


View Bindingを使う

たくさんidを参照したいときはこっちの方が良さそう。

まずGradle Scriptsからbuild.gradle(Module)を開きandroid { 〜 } の中にコードを追加する。

android {
   //ここを追加
    viewBinding {
        enabled = true
    }
}

Sync Now をクリックして閉じる。

次にMainActivity.kt にコードを追加。

import com.example.appname.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
 //追加
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
//削除        setContentView(R.layout.activity_main)

  //追加
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
    }
}

idを使うときは「binding.指定したid」と書けばOK。