回答編集履歴

3

修正

2020/09/18 14:48

投稿

keicha_hrs
keicha_hrs

スコア6768

test CHANGED
@@ -44,7 +44,7 @@
44
44
 
45
45
  ```java
46
46
 
47
- View.OnClickListener ImageButtonListenerImpl = new View.OnClickListener() {
47
+ View.OnClickListener imgBtnListenerImpl = new View.OnClickListener() {
48
48
 
49
49
  @Override
50
50
 
@@ -86,6 +86,6 @@
86
86
 
87
87
  // ★★★★★★★★動的ボタンにonClickイベントを付与したい★★★★
88
88
 
89
- imgBtn.setOnClickListener(ImageButtonListenerImpl);
89
+ imgBtn.setOnClickListener(imgBtnListenerImpl);
90
90
 
91
91
  ```

2

別解追記

2020/09/18 14:48

投稿

keicha_hrs
keicha_hrs

スコア6768

test CHANGED
@@ -17,3 +17,75 @@
17
17
  ```
18
18
 
19
19
  のようにすればいいのではないかと思います。
20
+
21
+
22
+
23
+ ---
24
+
25
+
26
+
27
+ 後で条件分岐することを考えたら、ループカウンターの変数jをそのままタグとして与えた方が処理しやすいのかな(配列変数だとswitch〜case文のcaseに与えられないですね)。`setTag()`メソッドを使って次のようにボタンにタグを与えるのも一つの方法でしょう。
28
+
29
+
30
+
31
+ ```java
32
+
33
+ ImageButton imgBtn = new ImageButton(this);
34
+
35
+ imgBtn.setTag(j);
36
+
37
+ ```
38
+
39
+
40
+
41
+ それから、ImageButtonにセットするリスナーを下記のように実装してみてはどうでしょうか。前述のタグを使ってswitch文で振り分けるのであればこのような感じで記述できるでしょう。
42
+
43
+
44
+
45
+ ```java
46
+
47
+ View.OnClickListener ImageButtonListenerImpl = new View.OnClickListener() {
48
+
49
+ @Override
50
+
51
+ public void onClick(View v) {
52
+
53
+ switch ((int) v.getTag()) {
54
+
55
+ case 0:
56
+
57
+ break;
58
+
59
+
60
+
61
+ case 1:
62
+
63
+ break;
64
+
65
+
66
+
67
+ case 2:
68
+
69
+ break;
70
+
71
+ }
72
+
73
+ }
74
+
75
+ };
76
+
77
+ ```
78
+
79
+
80
+
81
+ このようにして作成した変数を`imgBtn.setOnClickListener()`の引数に与えれば、ループの度にnewせずとも、1つのオブジェクトで共通処理とすることができます。
82
+
83
+
84
+
85
+ ```java
86
+
87
+ // ★★★★★★★★動的ボタンにonClickイベントを付与したい★★★★
88
+
89
+ imgBtn.setOnClickListener(ImageButtonListenerImpl);
90
+
91
+ ```

1

誤記修正

2020/09/18 14:13

投稿

keicha_hrs
keicha_hrs

スコア6768

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  ImageButton imgBtn = new ImageButton(this);
12
12
 
13
- int imageButtonId[j] = ViewCompat.generateViewId();
13
+ imageButtonId[j] = ViewCompat.generateViewId();
14
14
 
15
15
  imgBtn.setId(imageButtonId[j]);
16
16