2017-01-09 47 views
0

嗯即时通讯尝试获取每个按钮上的文本,它显示每个文本正确,但是当我尝试打印它时,它显示相同的文本。 optionD用编程方式创建按钮的Android问题

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

如果你想店内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()); 
    } 
});