Динамическое создание кнопок. Могу ли я выбрать одну и отменить выбор других кнопок? - PullRequest
2 голосов
/ 13 января 2010

Я создаю кнопки динамически ...

for(int i=0; i<colSize;i++){
    final Button btn = new Button(this);    
    btn.setText(SectionName[i]);        
    btn.setTextSize(10);
    btn.setPadding(8, 3,8, 3);   
    btn.setTextColor(Color.WHITE);
    btn.setTypeface(Typeface.SERIF, Typeface.BOLD);

    btn.setOnClickListener(new OnClickListener() {  
        @Override
        public void onClick(View v) {               
            //***Every time that I click my button is selected !:)
            btn.setSelected(true);      
        }                   

     });  

    }

Но как я могу отменить выбор других кнопок, которые я выбрал, я просто хочу, чтобы одна кнопка была выбрана! :)

Ответы [ 2 ]

3 голосов
/ 13 января 2010
  1. Жестокий способ (работает, если у вас мало кнопок) - сохраните ссылки на кнопки и создайте приватный метод, который циклически повторяет ваши кнопки и отменяет выбор, когда вам не нужно
  2. Расширьте свой класс кнопок и заставьте его слушать пользовательское событие, которое генерируется при нажатии одной из кнопок
  3. Посмотрите на реализацию RadioGroup
  4. Вариация № 1. Вместо создания отдельных слушателей для ваших кнопок создайте только один и используйте его для всех кнопок. Расширьте этот слушатель из OnClickListener и добавьте поле List. Каждый раз, когда вы назначаете слушателю кнопку, добавьте ссылку на этот список. Теперь, когда срабатывает onClick, просто прокрутите список и отключите «другие» кнопки
2 голосов
/ 14 января 2010

Объявление переменной для хранения идентификатора нажатой кнопки ::

private int EnabledButton;

установить идентификатор для каждой кнопки при создании ::

btn.setId(i);

или тег ::

btn.setTag(i);   

, затем в этом слушателе получите «EnabledButton» и вызовите функцию для отмены выбора других кнопок: *

 btn.setOnClickListener(new OnClickListener() {  
        @Override
        public void onClick(View v) {                 
        EnabledButton=btn.getId();
        DeselectButtons();        
        btn.setSelected(true);      
    }                   

 });  

Функция отмены выбора других кнопок ::

public void DeselectButtons() {
    for(int i=0; i<NumberofButtons;i++){            
                    if (EnabledButton!= i)
        this.findViewById(i).setSelected(false);
    }           

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...