单击动态按钮数组的事件

时间:2011-04-01 07:44:52

标签: android

使用下面的代码我可以生成一个按钮数组。但是我无法指定这些按钮的点击事件。我可以这样做吗

Button addAsFriend[] = new Button[c.getCount()];
 for( i=0;i<c.getCount();i++)
 {
    addAsFriend[i] = new Button(this);
 }

4 个答案:

答案 0 :(得分:2)

Button addAsFriend[] = new Button[c.getCount()];
 for( i=0;i<c.getCount();i++)
 {
    Button btn = new Button(this);
    btn.setOnClickListener(new View.OnClickListener() {

       @Override
       public void onClick(View v) {
        // your code here
       }
     };);
    addAsFriend[i] = btn;
 }

答案 1 :(得分:2)

Button addAsFriend[] = new Button[c.getCount()];
for( i=0;i<c.getCount();i++)
{
 addAsFriend[i] = new Button(this);
 ((Button)addAsFriend[i]).setOnClickListener(myclickListener);
}

答案 2 :(得分:0)

您可以在活动中实施OnClickListener界面。这样做你将不得不重写onClick()方法。然后,您可以将活动作为OnClickListener传递给每个按钮。

public class YourActivity implements OnClickListener {

     public void onCreate(){
         ...

         Button addAsFriend[] = new Button[c.getCount()];
         for( i=0;i<c.getCount();i++)
         {
             addAsFriend[i] = new Button(this);
             ((Button)addAsFriend[i]).setOnClickListener(this);
         }    
        ...
    }

    public void onClick(View v){
        // Put your listener code here.
    }
}

答案 3 :(得分:0)

...如果您想检索该按钮的索引,请使用地图!

Map<View,Integer> buttonMap = new HashMap<View,Integer>();

Button addAsFriend[] = new Button[c.getCount()];

for( i=0;i<c.getCount();i++)
{
   Button btn = new Button(this);
   buttonMap.put(btn,i);

   btn.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
         int index = buttonMap.get( v );

         // do something with index here

      }
   };);
   addAsFriend[i] = btn;
}