1

假设我有动态创建的按钮:

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 类中的按钮?

4

3 回答 3

1

在您的 onClickListener 中,您有一个函数,称为单击的视图onClick(View v){}在哪里。v您可以使用v来获取有关按钮的详细信息,包括其 ID。您也可以采用此视图,如果您知道它是一个按钮,则将其转换为一个按钮。

Button clicked = (Button)v;

然后,您可以在您的 javacode 中使用它,就像您通常使用按钮一样。

于 2012-12-30T06:49:57.283 回答
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);
}
于 2012-12-30T06:46:46.853 回答
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);
于 2012-12-30T06:47:56.650 回答