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){}どこにあるかという関数があります。ID を含むボタンの詳細を取得するためにv使用できます。vこのビューを取得して、それがボタンであることがわかっている場合は、ボタンにキャストすることもできます。

Button clicked = (Button)v;

その後、通常ボタンを使用するのと同じように、Java コードで使用できます。

于 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 に答える