2017-01-09 83 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()); 
    } 
}); 
相關問題