我从字符串数组动态填充表。表的每一行还有一个加号和减号按钮来增加/减少一列的值。这些按钮也是动态创建的,如下面的代码所示。在这里,如何在点击时检测到确切的按钮。即;如果我点击第二行的“+”按钮,如何点击该按钮的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));`
答案 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()方法可以帮助你。