2015-02-04 3 views
0

Я создаю tablerows и флажки динамически с помощью следующего кода:работы с динамически создаваемыми флажками

for (Iterator i = users.iterator(); i.hasNext();) { 
     Users p = (Users) i.next(); 

     /** Create a TableRow dynamically **/ 
     tr = new TableRow(this); 
     /** Creating a Checkbox to add to the row **/ 
     CheckBox cb = new CheckBox(this); 
     cb.setText(p.getEan()); 
     LinearLayout Ll1 = new LinearLayout(this); 
     Ll1.addView(cb); 
     System.out.println(j); 
     tr.addView((View)Ll1); // Adding CheckBox to tablerow. 

     /** Creating a TextView to add to the row **/ 
     label = new TextView(this); 
     label.setText(p.getName()); 
     label.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
       LayoutParams.WRAP_CONTENT)); 
     label.setPadding(5, 5, 5, 5); 
     label.setBackgroundColor(Color.GRAY); 
     LinearLayout Ll = new LinearLayout(this); 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 
       LayoutParams.WRAP_CONTENT); 
     params.setMargins(5, 2, 2, 2); 
     Ll.addView(label,params); 
     tr.addView((View)Ll); // Adding textView to tablerow. 

     // Add the TableRow to the TableLayout 
     tl.addView(tr, new TableLayout.LayoutParams(
       LayoutParams.FILL_PARENT, 
       LayoutParams.WRAP_CONTENT)); 
    } 

После его создания пользователя может установить или снять. С проверкой мне нужно выполнить другую команду для каждого флажка.

Моя проблема в том, как использовать флажки? Как я могу «говорить», чтобы я мог работать с ним?

+0

, когда вы хотите «запустить другую команду для каждого флажка». ?? –

+0

@hevilp Отправьте источник в свой метод onCheckedChangeListener. – iRuth

+0

Другая команда должна быть основана на тексте флажка? – Salmaan

ответ

0

Позвоните generateViewId() (или оставьте setId(i)) и используйте сгенерированный идентификатор в setId() для ваших программно сгенерированных флажков. Сохраните идентификатор локально во время вашей активности и используйте этот идентификатор так же, как статический идентификатор из R. в setOnCheckedChangeListener.

+0

это, по-видимому, метод для того, чтобы закодировать все сгенерированные идентификаторы и проверить его. можете ли вы дать мне пример кода PLS? – hevilp

0

Вы дали строкам и флажкам одинаковые идентификаторы. Не указывайте идентификаторы строк. Или разные.

Вы можете разместить следующий код на прослушивателях смены изменений.

LinearLayout my_layout = (LinearLayout)findViewById(R.id.my_layout); 

for (int i = 0; i < Array_Count; i++) 
{ 
CheckBox checkBox = (CheckBox)my_layout.findViewById(i); 

if (checkBox == null) 
    continue; 

Toast.makeText(context, checkBox.getText(), Toast.LENGTH_SHORT).show(); 

checkBox.setText("my id is: " + i); 
} 
+0

спасибо за это, но: что такое array_count? он принадлежит «Пользователям» ArrayList. код для меня теперь не используется. – hevilp

+0

Что за цикл с Array_Count поступило из вашего опубликованного кода. Очевидно, вы удалили этот код. Вы можете использовать этот код, если получите представление об этом. – greenapps

+0

и почему мне нужно установить макет? даже строка LinearLayout my_layout = (LinearLayout) findViewById (R.id.activity_einbuchen); не работает – hevilp

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