質問編集履歴
2
ListAdapter のgetViewメソッド内でリスナーが抜けていたので追加しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -26,6 +26,10 @@
|
|
26
26
|
訂正しました。
|
27
27
|
申し訳ありませんでした。
|
28
28
|
|
29
|
+
ListAdapter のgetViewメソッド内にリスナーが抜けておりましたので追加しましたところ、
|
30
|
+
Button okButton =(Button) convertView.findViewById(R.id.ok_Button);
|
31
|
+
の部分でぬるぽが発生します。
|
32
|
+
|
29
33
|
### 画面写真
|
30
34
|

|
31
35
|
### コード
|
@@ -116,17 +120,6 @@
|
|
116
120
|
|
117
121
|
ListAdapter
|
118
122
|
```Java
|
119
|
-
import android.content.Context;
|
120
|
-
import android.view.LayoutInflater;
|
121
|
-
import android.view.View;
|
122
|
-
import android.view.ViewGroup;
|
123
|
-
import android.widget.ArrayAdapter;
|
124
|
-
import android.widget.Button;
|
125
|
-
import android.widget.TextView;
|
126
|
-
|
127
|
-
import java.util.List;
|
128
|
-
|
129
|
-
|
130
123
|
public class ListAdapter extends ArrayAdapter<ListItem> {
|
131
124
|
|
132
125
|
private int mResource;
|
@@ -156,6 +149,18 @@
|
|
156
149
|
// リストビューに表示する要素を取得
|
157
150
|
ListItem item = mItems.get(position);
|
158
151
|
|
152
|
+
Button okButton =(Button) convertView.findViewById(R.id.ok_Button);
|
153
|
+
okButton.setOnClickListener(new OK_Listener());
|
154
|
+
|
155
|
+
Button ngButton =(Button) convertView.findViewById(R.id.ng_Button);
|
156
|
+
ngButton.setOnClickListener(new NG_Listener());
|
157
|
+
|
158
|
+
Button noneButton =(Button) convertView.findViewById(R.id.none_Button);
|
159
|
+
noneButton.setOnClickListener(new NONE_Listener());
|
160
|
+
|
161
|
+
Button commentButton =(Button) convertView.findViewById(R.id.comment_Button);
|
162
|
+
commentButton.setOnClickListener(new Comment_Listener());
|
163
|
+
|
159
164
|
// QuestionNumberに番号を設定
|
160
165
|
TextView questionNumber = (TextView)view.findViewById(R.id.questionNumber);
|
161
166
|
questionNumber.setText(Integer.toString(item.getQuestionNumber()));
|
@@ -166,6 +171,32 @@
|
|
166
171
|
|
167
172
|
return view;
|
168
173
|
}
|
174
|
+
//okボタンのリスナー
|
175
|
+
class OK_Listener implements View.OnClickListener {
|
176
|
+
public void onClick(View v){
|
177
|
+
Log.v("**********", "OK_Button");
|
178
|
+
}
|
179
|
+
}
|
169
180
|
|
181
|
+
//ngボタンのリスナー
|
182
|
+
class NG_Listener implements View.OnClickListener {
|
183
|
+
public void onClick(View v){
|
184
|
+
Log.v("**********", "NG_Button");
|
185
|
+
}
|
186
|
+
}
|
187
|
+
|
188
|
+
//noneボタンのリスナー
|
189
|
+
class NONE_Listener implements View.OnClickListener {
|
190
|
+
public void onClick(View v){
|
191
|
+
Log.v("**********", "NONEK_Button");
|
192
|
+
}
|
193
|
+
}
|
194
|
+
|
195
|
+
//commentボタンのリスナー
|
196
|
+
class Comment_Listener implements View.OnClickListener {
|
197
|
+
public void onClick(View v){
|
198
|
+
Log.v("**********", "Comment_Button");
|
199
|
+
}
|
200
|
+
}
|
170
201
|
}
|
171
202
|
```
|
1
MainActivityのコードがListViewのコードになってしまっていたのを修正しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -20,62 +20,59 @@
|
|
20
20
|
こういった場合はどこにどのような処理を書けばいいのでしょうか。
|
21
21
|
|
22
22
|
よろしくお願いします。
|
23
|
+
|
24
|
+
### 追記・修正
|
25
|
+
MainActivityのコードがListViewのコードになってしまっていました。
|
26
|
+
訂正しました。
|
27
|
+
申し訳ありませんでした。
|
28
|
+
|
23
29
|
### 画面写真
|
24
30
|

|
25
31
|
### コード
|
26
32
|
MainActivity
|
27
33
|
```Java
|
28
|
-
|
34
|
+
public class MainActivity extends AppCompatActivity {
|
29
|
-
import android.view.LayoutInflater;
|
30
|
-
import android.view.View;
|
31
|
-
import android.view.ViewGroup;
|
32
|
-
import android.widget.ArrayAdapter;
|
33
|
-
import android.widget.Button;
|
34
|
-
import android.widget.TextView;
|
35
35
|
|
36
|
+
@Override
|
37
|
+
protected void onCreate(Bundle savedInstanceState) {
|
36
|
-
|
38
|
+
super.onCreate(savedInstanceState);
|
39
|
+
setContentView(R.layout.activity_main);
|
37
40
|
|
41
|
+
// レイアウトからリストビューを取得
|
42
|
+
ListView listView = (ListView)findViewById(R.id.listview);
|
38
43
|
|
44
|
+
// リストビューに表示する要素を設定
|
39
|
-
|
45
|
+
ArrayList<ListItem> listItems = new ArrayList<>();
|
46
|
+
for (int i = 0; i < 30; i++) {
|
47
|
+
ListItem item = new ListItem(i + 1, "sample text", 0);
|
48
|
+
listItems.add(item);
|
49
|
+
}
|
40
50
|
|
41
|
-
|
51
|
+
// 出力結果をリストビューに表示
|
42
|
-
|
52
|
+
ListAdapter adapter = new ListAdapter(this, R.layout.list_item, listItems);
|
43
|
-
|
53
|
+
listView.setAdapter(adapter);
|
44
54
|
|
55
|
+
// タップ時のイベントを追加
|
45
|
-
|
56
|
+
listView.setOnItemClickListener(onItemClickListener);
|
46
|
-
super(context, resource, items);
|
47
57
|
|
48
|
-
mResource = resource;
|
49
|
-
mItems = items;
|
50
|
-
mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
51
|
-
|
52
58
|
}
|
53
59
|
|
60
|
+
private AdapterView.OnItemClickListener onItemClickListener = new AdapterView.OnItemClickListener() {
|
54
|
-
|
61
|
+
@Override
|
55
|
-
|
62
|
+
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
56
|
-
|
63
|
+
Toast.makeText(MainActivity.this, "テスト", Toast.LENGTH_LONG).show();
|
57
64
|
|
65
|
+
// タップしたアイテムの取得
|
58
|
-
|
66
|
+
ListView listView = (ListView)parent;
|
67
|
+
ListItem item = (ListItem)listView.getItemAtPosition(position); // ListItemにキャスト
|
68
|
+
|
69
|
+
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
|
70
|
+
builder.setTitle("Tap No. " + String.valueOf(position));
|
71
|
+
builder.setMessage(item.getQuestionContent());
|
59
|
-
|
72
|
+
builder.show();
|
60
73
|
}
|
61
|
-
else {
|
62
|
-
view = mInflater.inflate(mResource, null);
|
63
|
-
|
74
|
+
};
|
64
75
|
|
65
|
-
// リストビューに表示する要素を取得
|
66
|
-
ListItem item = mItems.get(position);
|
67
|
-
|
68
|
-
// QuestionNumberに番号を設定
|
69
|
-
TextView questionNumber = (TextView)view.findViewById(R.id.questionNumber);
|
70
|
-
questionNumber.setText(Integer.toString(item.getQuestionNumber()));
|
71
|
-
|
72
|
-
// QuestionContextに番号を設定
|
73
|
-
TextView questionContext = (TextView)view.findViewById(R.id.questionContext);
|
74
|
-
questionContext.setText(item.getQuestionContent());
|
75
|
-
|
76
|
-
return view;
|
77
|
-
}
|
78
|
-
|
79
76
|
}
|
80
77
|
```
|
81
78
|
|