[Android] KotlinでButterKnifeを使う

Kotlinを使っているプロジェクトでButterKnifeを使いたかったんですが、導入でつまずいたので導入方法をメモしておきます。ポイントとなるのはapp/build.gradleです。以下の箇所を追加します。kaptを使います。

apply plugin: 'kotlin-kapt'

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    // ButterKnife
    implementation 'com.jakewharton:butterknife:10.1.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
    kapt 'com.jakewharton:butterknife-compiler:10.1.0'
}

これでKotlinでもButterKnifeでぬるりとViewインジェクションできるようになります。

class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {

    @BindView(R.id.toolbar) lateinit var toolbar: Toolbar
    @BindView(R.id.drawer_layout) lateinit var drawerLayout: DrawerLayout
    @BindView(R.id.nav_view) lateinit var navView: NavigationView
    @BindView(R.id.recycler_view) lateinit var recyclerView: RecyclerView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        ButterKnife.bind(this)

        // Toolbar
        setSupportActionBar(toolbar)

        // 以下略
    }

    @OnClick(R.id.fab)
    fun onFabClick() {
        // TODO
    }
}