2013-02-11 21 views
3

Android 2.3.3Установка кнопки ID программно

У меня есть таблица с N строками и N столбцами. Для каждой строки я должен добавить 4 кнопки динамически, а затем выполнить действия на основе нажатой кнопки. Я знаю, что мы можем установить идентификаторы кнопок со значениями Integer с button.setID(), но я хочу знать, можно ли установить идентификаторы как строковые значения, как мы установили в файлах XML, такие как btnXYZ1 и btnXYZ2 и т.д.,

+0

Файлы xml не задают его как строку. все идентификаторы преобразуются в R.id, который имеет их все как целые числа. –

+0

Да, я знаю, я спрашивал, можем ли мы сделать то же самое программно. –

+0

Ну, если у вас есть ссылка на каждую из кнопок, вы можете поместить их все в HashMap . –

ответ

9

Вы можете использовать тэги для этой цели . Например

btn.setTag("btXYZ"); 
+0

Итак, вы имеете в виду, что я устанавливаю идентификаторы с целыми числами и устанавливаю теги со строками и использую теги, чтобы найти, какая кнопка нажата на более позднем этапе? –

+0

Да, вы можете сделать это так: – pvn

+0

@ VamsiChalla. Все функции, которые вы должны получить, используя id, есть и для тегов, таких как 'findViewByTag' вместо' findViewById', View.getTag() вместо getId() и of the course View.setTag – pvn

0

Нет, вы не можете установить его String, идентификатор не int значение, даже если вы установите его из XML это просто имя ресурса из int значения

1
for (int i=0;i<nob;i++) { 
    Button btn = new Button(this); 
    btn.setId(i+1); 
    btn.setText("Button"+(i+1)); 
    btn.setOnClickListener(btnclick); <<<<<<<set click 
    btn.setLayoutParams(lprams); 
    dynamicview.addView(btn); 
} 

и добавить listner вне любого метода и внутри класса

OnClickListener btnclick = new OnClickListener() { 

    @Override 
    public void onClick(View view) { 

     switch(view.getId()) { 
      case 1: 
       //first button click 
       break; 
       //Second button click 
      case 2: 
       break; 
      case 3: 
       //third button click 
       break; 
      case 4: 
       //fourth button click 
       break; 
      . 
      . 
      . 
      default: 
       break; 
     } 
    } 
}; 
1

Строки, которые вы используете в ваших XML-файлах, соответствуют int в R.java, и, следовательно, фактически ints. Метод setId() принимает только значение int в качестве аргумента. Вы можете определить свои идентификаторы в файле констант, что-то вроде:

public class Ids { 
    public static final int ID_ONE = 1; 
} 

, а затем использовать его как:

button.setId(Ids.ID_ONE); 
0

Нет, вы не можете установить его в строку, то идентификатор INT значение, даже если вам установите его из XML, это просто имя ресурса значения int

0

Если у вас есть ссылки на представления в любом случае, вы можете просто сохранить их все в HashMap, например, используя HashMap.

Другой альтернативой, чтобы избежать каких-либо опечаток, является переименование в качестве ключа хэш-карты, например: HashMap.

Смежные вопросы