4

我正在从一个字符串数组动态填充一个表。表的每一行还有一个加号和减号按钮来增加/减少一列的值。这些按钮也是动态创建的,如下面的代码所示。在这里,我如何在单击时检测到确切的按钮。IE; 如果我单击第二行的“+”按钮,如何获取单击按钮的 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));`
4

2 回答 2

3

您可以onClickListener为每个按钮设置一个侦听器。view.getId()在您的方法上使用方法中的按钮 idonClick()来识别按钮单击。

您可以像这里一样为每个按钮添加单独的侦听器(假设您为每个按钮设置的 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()
}
于 2013-03-27T11:58:19.223 回答
0

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

在您的 clickListener 中,只需从您的按钮中获取它view.getTag()

然后在比较字符串标签的操作之间切换。

编辑:
ID 的“应该”是唯一的。如果 setId() 对您不起作用, setTag() 方法可能会对您有所帮助。

于 2013-03-27T12:17:45.470 回答