如何为动态创建的多个按钮创建单击侦听器? 这是我的代码。
int cn = myary.length;
ScrollView sv = new ScrollView(this);
TableLayout ll = new TableLayout(this);
HorizontalScrollView hsv = new HorizontalScrollView(this);
TableRow tbrow0 = new TableRow(this);
EditText tv0 = new EditText(this);
tv0.setText("");
tbrow0.addView(tv0);
ll.addView(tbrow0);
int j = 0;
for (int i = 0; i < cn; i++) {
TableRow tbrow = new TableRow(this);
t1v = new Button(this);
t1v.setText(myary[i]);
t1v.setId(i+j);
tbrow.addView(t1v);
ll.addView(tbrow);
}
hsv.addView(ll);
sv.addView(hsv);
setContentView(sv);
答案 0 :(得分:3)
您可以创建一个实现View.OnClickLister的内部类,然后您可以将其设置为您的每个按钮:
让我们创建一个全局对象,让@ njzk2快乐:
private ClickListener mySingleListener = new ClickListener();
让我们将这个单一的监听器设置为我们的所有按钮:
t1v = new Button(this);
t1v.setTag(i);
t1v.setOnClickListener(mySingleListener);
您的ClickListener类是:
private class ClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
int position = (Integer) v.getTag();
// Do click event here
}
}
答案 1 :(得分:1)
创建一个实现View.OnClickListener
的类class MyClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
// put here what the click should do
}
}
然后将您班级中的对象附加到按钮
btn.setOnClickListener(new MyClickListener());
答案 2 :(得分:0)
例如,主布局中有3个按钮:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_switcher"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<Button
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/btn1"
android:onClick="onClick"
/>
<Button
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/btn2"
android:onClick="onClick"
/>
<Button
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/btn3"
android:onClick="onClick"
/>
</LinearLayout>
我的活动metod onClick处理来自三个按钮的事件。我们需要认识到按钮已被按下。
public void onClick(View view) { // Parameter 'view' used
switch (view.getId())
{
case (R.id.btn1):
{
Toast.makeText(this, "Hello Button_1 pressed", Toast.LENGTH_LONG).show();
break;
}
case (R.id.btn2):
{
Toast.makeText(this, "Hello Button_2 pressed", Toast.LENGTH_LONG).show();
break;
}
case (R.id.btn3):
{
Toast.makeText(this, "Hello Button_2 pressed", Toast.LENGTH_LONG).show();
break;
}
}
这是如何使用“视图”
的一个示例