用编程创建按钮的Android问题

时间:2017-01-09 23:40:00

标签: android android-view

我想尝试在每个按钮上获取文本,它会在每个按钮上正确显示文本,但是当我尝试打印时,它会显示相同的文本。 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());
                    }
                });
            }
        }

1 个答案:

答案 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());
    }
});