Установка флажков динамически в макете - PullRequest
0 голосов
/ 11 августа 2011

Последние пару дней я ломал голову над тем, как точно взять каждый элемент в ряде строковых массивов и поместить их в флажки, которые затем будут помещены в линейный макет. Каждый раз, когда пользователь выбирает что-то из группы радиокнопок (которая находится на одной вкладке), содержимое этих линейных макетов (которые содержатся в всеобъемлющей линейной компоновке) будет изменяться в зависимости от того, какая радиокнопка была выбрана. Так будет примерно так:

[Пользователь выбирает что-то на этой вкладке с помощью переключателей] -> [Эта вкладка обновляется]

Вкладка в вопросе:

  • [Линейный макет]

    • [Линейный макет]
      • [x] String1
      • [x] String2
      • [x] String3

Я пытался использовать ListView, но содержимое каждой строки списка должно быть легко выбираемым (следовательно, с помощью флажков). Я думал о том, чтобы попробовать MergeAdapter, но мне пришлось бы кое-как изменить массивы, которые ему передаются, каждый раз, когда происходит обновление (и я не использую SQLite или Cursors).

Так может ли кто-нибудь предложить решение этой проблемы?

[Редактировать] Извините, если мои намерения не были так ясны. Я написал Adapter, который принимает массив строк и, если установлен ListView, будет показывать поставить флажок в каждой строке списка. Вместо этого я хотел бы просто сделать флажок с текстом в нем, установленным на один из элементов массива и добавленным к одному из LinearLayouts. Это будет проходить через весь массив. Таким образом, у меня будет несколько наборов флажков, которые пользователь может выбрать. Код (или псевдокод) будет выглядеть примерно так:

for (int i = 0; i < someArrayAdapter.size; i++) {
  ListView.addView(someArrayAdapter.getView(i, someConverView, someGroupView));
}

Где someArrayAdapter - пользовательский адаптер. Я обнаружил, что на самом деле не могу использовать getView() таким образом, поэтому мне нужно использовать какой-то другой метод (вот почему я спрашиваю здесь;)).

1 Ответ

0 голосов
/ 11 августа 2011

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

...