スコープのitでつまづいた

そのまま

失敗したコード

private fun setupView() {
  binding?.let {
    it.setOnClick {
      Toast.makeText(context, it.title.text.toString(), Toast.LENGTH_SHORT).show()
    }
  }

何がしたかったのか

?.letでbindingがnullじゃないことを保証した上で(binding?.hogeって書かなくて良いように)、スコープ関数を使ってクリックリスナーを設定、かつそのクリックリスナー内でView内のwidgetにアクセスして値を取得したかった

何がいけなかったのか

setOnClickの内外でitが指しているものが違う setOnClick外では、NonNullなbinding setOnClick内では、OnClickのリスナー

解決策

private fun setupView() {
  binding?.let {
    it.setOnClick { _ ->
      Toast.makeText(context, it.title.text.toString(), Toast.LENGTH_SHORT).show()
    }
  }

とかとか

まとめ

itは便利だけど何を指しているのかちゃんと考えて使おうな

こんなことで躓くのは自分しかいなさそう

mito.