需要为我的onClick保存变量

时间:2011-09-06 08:45:52

标签: java android button buttonclick

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

有没有办法做到这一点?

3 个答案:

答案 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。