0

アプリでボタンを動的に表示しています。表示するボタンの数を決定しているときに、正常に機能します。ただし、クリック時にボタンの背景色を変更したいので、それもできますが、ラベル部分だけが色を変更し、残りはすべて同じです。

では、どうすればこの問題を解決できますか? これが私がこれまでに持っているコードです:

btn = new ButtonField[Global.vec_locdisablecityname.size()];

for(int i=0;i<Global.vec_locdisablecityname.size();i++){
    btn[i] = new ButtonField("",ButtonField.CONSUME_CLICK |ButtonField.FOCUSABLE);
    btn[i].setLabel((String)Global.vec_locdisablecityname.elementAt(i));

    if(Global.flag == true){
        Global.flag = false;
        Bitmap bmp_backbtnclick=Bitmap.getBitmapResource("bg-btn-location.png");
        Background bg_backbtnclick=BackgroundFactory.createBitmapBackground(bmp_backbtnclick);
        btn[i].setBackground(bg_backbtnclick);
    }
    else {
        if(Global.selectedbutton == i){
            Bitmap bmp_backbtnclick=Bitmap.getBitmapResource("bg-btn-location.png");
            Background bg_backbtnclick=BackgroundFactory.createBitmapBackground(bmp_backbtnclick);
            btn[i].setBackground(bg_backbtnclick);
        }
        else {
            btn[i].setBackground(null);
        }
    }
    FieldChangeListener listener = new FieldChangeListener() {
        public void fieldChanged(Field field, int context) {
            if ( field instanceof ButtonField ) {
                for ( int i = 0; i <= 1; i++ ) {
                    if ( field == btn[i] ) {
                        System.out.println("CLicked::::---->>>" +i);
                        btn[i].setBackground(null);
                        Global.selectedbutton = i;
                        selectedcityid = Global.vec_locdisablecitycode.elementAt(i).toString();
                        System.out.println("value of selected city id:::-->>" +selectedcityid);
                        selectedcitycodeparse(selectedcityid);
                        selectedstartloading();
                        break;
                    }
                    else {
                        btn[i].setBackground(null);
                    }
            }
        }
        }
    };
    btn[i].setChangeListener(listener);
    hfmbuttons.add(btn[i]);
}
4

0 に答える 0