2011-09-06 43 views
0
for (int i = 0; i < responses.size(); i++) 
    { 
     Button btn = new Button(this); 
     btn.setText(guideStep.getResponse(i).getTitle()); 
     btn.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) 
      { 
       try 
       { 
        //NextStep(guideStep.getStep(), guideStep.getSession(), guideStep.getResponse(i).getId()); 
       } 
       catch(Exception e) 
       { 
        e.printStackTrace(); 
       } 
      } 
     }); 
     linearLayout.addView(btn); 
    } 

看一下下面的代码。我正在为我的线性布局动态添加按钮。我需要动态修改每个按钮的onClick事件。为此,我需要循环中的计数器和一些方法来保存我的guideStep对象,从没有循环也。需要保存的变量为我的onClick

有没有办法做到这一点?

+0

我需要用我的onClick调用方法,但我需要有关按钮的信息,我点击它随同发送。我只能从在onClick范围外实例化的对象获取信息。 –

回答

0
for (int i = 0; i < responses.size(); i++) 
{ 
    final int id = i; // save your variable 

    ... 
    try 
    { 
     NextStep(guideStep.getStep(), guideStep.getSession(), 
      guideStep.getResponse(id).getId()); // use it 
    } 
    .... 
} 
0
for (int i = 0; i < responses.size(); i++) 
{ 
    final int fin_i = i; 
    ... 
    btn.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) 
     { 
      // Use fin_i 
     }); 
    ... 
} 
0

您可以使用您的按钮setTag(your_id)方法,然后让后面的ID在你OnClickgetTag()方法。