在android中动态添加按钮,如何将onClick添加到xml

时间:2012-07-31 16:20:10

标签: android dynamic onclick onclicklistener

情况就是这样:我有一个动态生成一堆随机自定义图像按钮的活动,并将它们添加到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); //我想做这样的事情,但这显然不起作用                 }             });

4 个答案:

答案 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中以便稍后引用它们。
  • 创建后立即定义onClickListeners。

答案 3 :(得分:0)

尝试使用从按钮继承的类并在其中添加OnClickListener。像这样:

class MyButton extends Button {

        OnClickListener clicker = new OnClickListener() {
        public void onClick(View v) {

              displayCell(v);

        }
        };

}