-1

如何为动态创建的多个按钮创建单击侦听器?这是我的代码。

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);
4

3 回答 3

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
    }

}
于 2013-04-12T13:53:33.397 回答
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());
于 2013-04-12T13:57:01.617 回答
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>

我您的活动方法是 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;
        }
    }

这是如何使用“视图”的一个示例

于 2013-04-12T13:53:41.883 回答