一个ClickListener

时间:2013-04-12 13:49:22

标签: android

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

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

3 个答案:

答案 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;
        }
    }

这是如何使用“视图”

的一个示例