动态按钮和OnClickListener

时间:2012-12-30 06:37:35

标签: android class onclick 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 SpiritsClickListener());
                         cabinet_layout.addView(imgBtn);
                     }

我想在每次按下时更改按钮的文本(开 - 关) 如何引用OnClickListener类中的按钮?

3 个答案:

答案 0 :(得分:1)

在你的onClickListener中,你有一个名为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);