スコープの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.