我想尝试在每个按钮上获取文本,它会在每个按钮上正确显示文本,但是当我尝试打印时,它会显示相同的文本。 optionD
的文本private void displayQuestion() {
final ArrayList<String> options = new ArrayList<>();
for (int i = 0; i < questions.size(); i++){
Questions diaplayQuestion = questions.get(i);
question.setText(diaplayQuestion.getQuestion());
options.add(0, diaplayQuestion.getOptionA());
options.add(1, diaplayQuestion.getOptionB());
options.add(2, diaplayQuestion.getOptionC());
options.add(3, diaplayQuestion.getOptionD());
correctOption = diaplayQuestion.getCorrectOption();
}
for (int i = 0; i < options.size(); i++) {
btn = new Button(GameplayActivity.this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(10, 10, 10, 0);
btn.setLayoutParams(params);
btn.setText(options.get(i));
btn.setId(i);
linearLayout.addView(btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
System.out.println(view.getId());
}
});
}
}
答案 0 :(得分:0)
如果您想在View
使用标记内存储一些信息。来自官方文档:
与ID不同,标签不用于标识视图。标签本质上是可以与视图相关联的额外信息。它们通常用作方便在视图中存储与视图相关的数据,而不是将它们放在单独的结构中。
所以在你的情况下,它会是这样的:
btn = new Button(GameplayActivity.this);
...
btn.setTag(options.get(i)); // I assume that value is String
...
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
System.out.println((String) view.getTag());
}
});