如何识别从动态生成的表中单击的按钮

时间:2013-03-27 11:53:43

标签: android user-interface

我从字符串数组动态填充表。表的每一行还有一个加号和减号按钮来增加/减少一列的值。这些按钮也是动态创建的,如下面的代码所示。在这里,如何在点击时检测到确切的按钮。即;如果我点击第二行的“+”按钮,如何点击该按钮的ID进行进一步处理。

 plusButton= new Button(this);
 minusButton= new Button(this);
 createView(tr, tv1, names[i]);
 createView(tr, tv2, (String)(names[i+1]));
 minusButton.setId(i);
 minusButton.setText("-");
 minusButton.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
 plusButton.setId(i);
 plusButton.setText("+");
 plusButton.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));`

2 个答案:

答案 0 :(得分:3)

您可以为每个按钮设置onClickListener侦听器。使用view.getId()方法onClick()方法中的按钮ID来识别按钮点击。

你可以像这里一样为每个按钮添加单独的监听器(假设你为每个按钮设置的id对应一行)

minusButton.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
             // Do some operation for minus after getting v.getId() to get the current row
        }
    }
);

修改

我假设您的代码是这样的。如果有偏差,请纠正我。

Button minusButton = null;
for(int i = 0; i < rowCount; i++)
{
    minusButton = new Button(this);
    minusButton.setId(i);
    // set other stuff and add to layout
    minusButton.setOnClickListener(this);
}

让您的类实现接口View.OnClickListener并实现onClick()方法。

public void onClick(View v){
    // the text could tell you if its a plus button or minus button
    // Button btn = (Button) v;
    // if(btn){ btn.getText();}
    // getId() should tell you the row number
    // v.getId()
}

答案 1 :(得分:0)

您可以使用代码:minusButton.setTag("-")plusButton.setTag("+")

在clickListener中,只需使用view.getTag()按钮即可获取。

然后在比较字符串标记的行为之间切换。

修改
ID“应该”是唯一的。如果setId()不适合你,setTag()方法可以帮助你。