假设我有动态创建的按钮:
for(int j = 0; j < spirits.length;
j++){
Button imgBtn = new Button(v.getContext());
imgBtn.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
imgBtn.setMinimumWidth(100);
imgBtn.setMinimumHeight(100);
imgBtn.setId(j+1);
imgBtn.setTag(spirits[j]);
imgBtn.setText(spirits[j]);
imgBtn.setOnClickListener(new SpiritsClickListener());
cabinet_layout.addView(imgBtn);
}
我想在每次按下时更改按钮的文本(开 - 关) 如何引用OnClickListener类中的按钮?
答案 0 :(得分:1)
onClick(View v){}
的函数,其中v
是被点击的视图。您可以使用v
获取有关按钮的详细信息,包括其ID。您也可以使用此视图,如果您知道它是一个按钮,则将其转换为按钮。
Button clicked = (Button)v;
然后,您可以像在正常情况下使用按钮一样在javacode中使用它。
答案 1 :(得分:0)
为什么不像这样在
中调用new OnClickListener()
for(int j = 0; j < spirits.length;j++){
Button imgBtn = new Button(v.getContext());
imgBtn.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
imgBtn.setMinimumWidth(100);
imgBtn.setMinimumHeight(100);
imgBtn.setId(j+1);
imgBtn.setTag(spirits[j]);
imgBtn.setText(spirits[j]);
imgBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//do what you need to do here
}
});
cabinet_layout.addView(imgBtn);
}
答案 2 :(得分:0)
为动态创建的按钮创建OnClickListener
:
// Create Listener for Button
private OnClickListener SpiritsClickListener = new OnClickListener()
{
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
Button btn = (Button) view;
String btnText = btn.getText();
if(btnText.equalsIgnoreCase("On")){
btn.setText("Off");
}else{
btn.setText("On");
}
}
};
将此侦听器添加到动态创建的按钮中:
imgBtn.setOnClickListener(SpiritsClickListener);