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对象,而不需要循环。
有没有办法做到这一点?
答案 0 :(得分: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
});
...
}
答案 1 :(得分: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
}
....
}
答案 2 :(得分:0)
您可以在按钮上使用setTag(your_id)
方法,然后在getTag()
中使用OnClick
方法返回ID。