情况就是这样:我有一个动态生成一堆随机自定义图像按钮的活动,并将它们添加到TableView,在我的xml中。此活动还有一个方法,我想在单击其中一个/任何一个按钮时调用。按钮里面有变量;该方法获取这些变量并将它们设置为TextView(在同一个活动中),因此我认为所有按钮都可以使用这一个方法。如果这些按钮是在XML中定义的,我会使用android:onClick =“displayCell”来指定方法,但它们不是。有没有办法只为这些按钮设置onClick,因为我在活动中生成它们或者我必须使用
button.setOnClickListener(new OnClickListener(){....});
并且经历了一些麻烦,正如我在这里的一些答案中看到的那样?我遇到的问题是我似乎无法从onClick内部调用我的方法,因为方法的参数(按钮)不是最终的(我在循环中制作了一堆'按钮'所以我不喜欢我认为它可以是:
button.setOnClickListener(new OnClickListener(){ public void onClick(查看q){ button.getActivity()。displayCell(button); //我想做这样的事情,但这显然不起作用 } });
答案 0 :(得分:1)
您可以让Activity实现OnClickListener,然后(假设您在活动中):
button.setOnClickListener(this);
答案 1 :(得分:1)
是的comodoro状态,或者让你的onClickLIstener成为你班级的成员变量,不要在每个按钮上做“新”。
private OnClickListener mOnClickListener = new OnClickListener() {...};
并在创建按钮时:
button.setOnClickListener(mOnClickListener);
侦听器中的onClick()函数将传递按钮本身的视图。您可以从此函数访问按钮变量等。
public void onClick(View v)
{
ImageButton button = (ImageButton)v;
// and access your button data via button object...
}
答案 2 :(得分:0)
解决方法可能是:
setId()
方法为它们提供一个整数ID(稍后再引用它们)。您可以将ID存储在List
中以便稍后引用它们。 答案 3 :(得分:0)
尝试使用从按钮继承的类并在其中添加OnClickListener。像这样:
class MyButton extends Button {
OnClickListener clicker = new OnClickListener() {
public void onClick(View v) {
displayCell(v);
}
};
}