gpt4 book ai didi

android - 动态设置OnClickListener

转载 作者:太空宇宙 更新时间:2023-11-03 11:40:49 24 4
gpt4 key购买 nike

我像这样动态创建不同的按钮:

for (int toShow = 1; toShow <= nShips; toShow++)
{
btn = new Button(this);
btn.setBackgroundResource(shipDrawable.get(ima));
btn.setLayoutParams(params);
row[pos].addView(btn);
btn.setId(shipId.get(ima));
if (row[pos].getChildCount() == 3) pos++;
ima++;
}

我需要知道每个按钮的身份,因为彼此有不同的 Action 。然后,我尝试像这样设置 onClickListener:

btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View btn) {
switch(btn.getId()){
case 1000: System.out.println("FIRST");
break;

case 1004: System.out.println("FOURTH");
break;
}
}
});

但它不起作用。似乎 onClickListener 只影响最后创建的项目。如果我创建四个按钮,则只有第四个按钮具有 onClickListener

如何让我的点击监听器工作?

最佳答案

你可以这样做:

OnClickListener clicks=new OnClickListener() {

@Override
public void onClick(View v) {

switch(v.getId())
{
case 1000: System.out.println("FIRST");
break;

case 1004: System.out.println("FOURTH");
break;
}
}
};
for (int toShow = 1; toShow <= nShips; toShow++)
{
btn = new Button(this);
btn.setBackgroundResource(shipDrawable.get(ima));
btn.setLayoutParams(params);
row[pos].addView(btn);
btn.setId(shipId.get(ima));
btn.setOnClickListener(clicks);
if (row[pos].getChildCount() == 3) pos++;
ima++;
}

关于android - 动态设置OnClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9768572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com