2015-08-07 3 views
2

У меня есть TableLayout; первый столбец первого TableRow - это CheckBox. В файле .axml создаются TableLayout и первые TableRow. Я создаю и заполняю остальную часть TableRows в файле .cs. Первый столбец каждого программно созданного TableRow также является CheckBox.Проверьте/Снимите флажок с нескольких флажков внутри TableLayout

Использование CheckBox в первом TableRow Я хотел бы установить/снять отметку со всех программно созданных флажков.

В приложении Windows Forms я бы сделал это, собрав флажки в массив и итерируя через массив, чтобы установить свойство checked для каждого. В моем приложении для Android я не могу понять, как это сделать.

+0

вы можете расширить 'checkbox' класс слишком – Milen

ответ

1

Вам необходимо перебрать все TableRows внутри вашего TableLayout, найти свои флажки и проверить/снять отметку. Для этого, добавьте слушателя храповой случае первого флажка, что делает что-то вроде этого:

//Number of TableRows 
var count = tableLayout.ChildCount; 
//Position of you checkbox inside each TableRow 
//TODO: make this a constant outside the listener method 
var checkBoxPosition = 0; 

for (int i = 0; i < count ; i++) { 
    var tableRow = tableLayout.GetChildAt(i) as TableRow; 
    if (tableRow != null) { 
     var checkBox = tableRow .GetChildAt(checkBoxPosition) as CheckBox; 
     if (checkBox != null) { 
      //TODO: Use state of the main checkbox here 
      checkBox.Checked = true; 
     } 
    } 
} 
+0

@AngeloDeMichaels он работал нормально? :) –

+0

Работает отлично. Единственное, что я сделал по-другому, это изменить 0 в цикле 'for' на 1.« CheckBox »в первом« TableRow »запускает цикл и, на мой взгляд, не нужно обрабатывать. –

+0

Я сделал, и как только моя репутация немного увеличится, оценка изменится. :) –

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