2012-07-31 62 views
0

这里的情况:我有一个动态生成一串随机定制imagebuttons的并将它们添加到TableRows,在TableView中,在我的XML的活动。此活动还有一个方法,我想在单击其中一个/这些按钮时调用。按钮里面有变量;该方法获取这些变量并将它们设置为一个TextView(在同一个活动中),所以我想所有的按钮都可以使用这一个方法。如果这些按钮是在XML中定义的,我只需使用android:onClick =“displayCell”来指定方法,但它们不是。有没有办法只为这些按钮设置onClick,因为我在活动中生成这些按钮,或者我必须使用android系统中动态添加按钮,如何添加的onClick为xml

button.setOnClickListener(new OnClickListener(){....});

,并办理了一堆麻烦,因为我在一些问题的答案已经看到了在这里?我对此的问题是,我似乎无法从内部的onClick打电话给我的方法,因为该方法(按钮)的说法是不是最终的(我做了一堆的“按钮”的循环,所以我不要“T认为它可以):

button.setOnClickListener(新OnClickListener(){ 公共无效的onClick(查看q){ button.getActivity()displayCell(按钮); //我想这样做。这个但这显然是行不通的 } });

回答

1

你可以有活动实现OnClickListener,然后(假设你是在活动):

button.setOnClickListener(this); 
0

对此的解决方案可能是:

  • 创建按钮的不同实例(所以。你可以使它们最终)
  • 使用setId()方法给它们一个整数ID(稍后参考它们)。您可以将ID存储在一个List以便稍后引用它们。
  • 定义他们的onClickListeners创建后马上。
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... 
} 
0

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

class MyButton extends Button { 

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

       displayCell(v); 

     } 
     }; 

}