我根据从另一个对象获得的数组列表的大小动态创建按钮。对于arraylist的每个条目,我需要创建三个按钮,每个按钮具有不同的动作。
像这样我需要创建3倍大小的arraylist按钮数量。如果我只有一组按钮,我可以写onClick()
- 方法取得按钮的ID但是这里我有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());