1
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 对象,而无需循环。

有没有办法做到这一点?

4

3 回答 3

1

您可以使用setTag(your_id)按钮上的方法,然后getTag()使用OnClick.

于 2011-09-06T09:31:48.587 回答
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 
        });
    ...
}
于 2011-09-06T08:56:32.857 回答
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
     }
     ....
}
于 2011-09-06T08:57:10.070 回答