具有不同操作的Android多个按钮

时间:2011-09-27 09:25:23

标签: android

我根据从另一个对象获得的数组列表的大小动态创建按钮。对于arraylist的每个条目,我需要创建三个按钮,每个按钮具有不同的动作。

像这样我需要创建3倍大小的arraylist按钮数量。如果我只有一组按钮,我可以写onClick() - 方法取得按钮的ID但是这里我有3个按钮用于每个条目,需要为这三个按钮写3个不同的动作。

怎么可以这样做?

3 个答案:

答案 0 :(得分:1)

当我需要为每个数组项目提供textview时,我做了类似的事情。就像 -

String[] arrayName={"abc","def","ghi"};
for(int i=0;i<arrayName.length;i++)     
    {
        TextView tv=new TextView(context);
        tv.setPadding(20, 5, 40, 5);                
        tv.setText(arrayName[i]);
        tv.setTextSize(1, 12);

        tv.setLayoutParams(new Gallery.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
        tv.setTextColor(Color.parseColor("#2554C7"));
        tv.setClickable(true);
        tv.setId(i);            

        layout.addView(tv);         
    }

同样,您可以以类似的方式添加按钮。并且在每个人的点击事件中,你可以单独编写他们的动作。(我没试过这个)。所以在每次迭代中,每个数组项都有3个按钮。

修改 - 1:

您可以区分ID:

mButton1.setId(Integer.parseInt(i+"1"));  
mButton2.setId(Integer.parseInt(i+"2"));
mButton3.setId(Integer.parseInt(i+"3"));

然后你可以在每个按钮上设置点击监听器,如mButton1.setOnClickListener ......等等。

答案 1 :(得分:0)

声明按钮列表:

private List<Button> buttons = new ArrayList<Button>();

然后将每个按钮添加到此列表中:

buttons.add(0, (Button) findViewById(id in ur layout));

在for循环中给出了点击监听器:

Button element = buttons.get(i);
element.setOnClickListener(dc);

其中dc是实现OnClickListener的内部类的对象名。

要访问每个按钮,您可以:

Button myBtn;

@Override
public void onClick(View v) {

    myBtn = (Button) v;
        // do operations related to the button
}

答案 2 :(得分:0)

为按钮操作事件创建Common Listener类,并将used用于setOnClickListener()方法

现在设置按钮的唯一ID。

现在假设你的班级看起来像这样:

class MyAction implements onClickListener{
     public void onClick(View view){
          // get the id from this view and set into the if...else or in switch 
          int id = view.getId();
          switch(id){
               case 1:
               case 2:
               /// and so on...
          }
          //// do operation here ...
     }
}

像这样在按钮中设置这个监听器。

Button b1 = new Button(context);
b1.setId(1);
b1.setOnClickListenr(new MyAction());
Button b2 = new Button(context); 
b2.setId(2);
b2.setOnClickListener(new MyAction());