回答編集履歴

1

回答追加

2020/10/01 08:45

投稿

keicha_hrs
keicha_hrs

スコア6768

test CHANGED
@@ -39,3 +39,47 @@
39
39
 
40
40
 
41
41
  で渡せませんか?
42
+
43
+
44
+
45
+ ---
46
+
47
+
48
+
49
+ > 最終的にはcard1_1.setImageResource(R.drawable.c1)と同様の処理にしたい
50
+
51
+
52
+
53
+ 元々のコードで`setImageResource()`が赤く表示される原因は、`setImageResource()`はImageViewクラスの持つメソッドであり、Viewにはないからです。それを解決してあげれば、IDで渡さなくてもいいように思います。
54
+
55
+
56
+
57
+ ```kotlin
58
+
59
+ card1_1.setOnClickListener {
60
+
61
+ change(it)
62
+
63
+ }
64
+
65
+ }
66
+
67
+
68
+
69
+ fun change(view: View) {
70
+
71
+ if (view is ImageView) {
72
+
73
+ // ★1
74
+
75
+ view.setImageResource(R.drawable.c1)
76
+
77
+ }
78
+
79
+ }
80
+
81
+ ```
82
+
83
+
84
+
85
+ のようにis演算子で引数viewがImageViewのインスタンスであることを判定したならば、★1のブロック内ではviewを用いてImageViewのメソッドを用いることができ、`setImageResource()`を記述してもエラーにはならないはずです(スマートキャスト)。これを応用すれば問題も解決できるのではないでしょうか。