Метод вызова Android с несколькими кнопками, которые изменяют setText метода

Мой вопрос на самом деле не проблема с кодом, а скорее, как сделать это наиболее эффективным образом: как с точки зрения ресурсов приложения, так и времени на создание, пытаясь оставаться верным ООП. Пожалуйста, не стесняйтесь указать, где существует несоответствие.

Цель:

  • Пользователю будет представлено несколько строк (предположим, 30)
  • Каждая строка будет состоять из 3 TextView (TV для краткости) и 1 Button, которые суммируют значения вместе в общее число.
  • TV1 суммирует TV2 и 3
  • TV2 будет основан на значении в SQLiteDB (которое я уже настроил), чьи значения будут основаны на 1 из 6 значений, рассчитанных в другом фрагменте.
  • TV3 будет инициализирован в 0
  • Кнопка добавит 1 к TV3 onClick

Текущая запланированная реализация:

  • setOnClickListeners для 30 кнопок
  • onClick для каждой кнопки установит статическое целое число в зависимости от того, какая кнопка была нажата
  • Затем onClick вызовет метод addOne
  • addOne будет использовать переключатель, чтобы добавить единицу к соответствующему TV3 и TV3.setText на основе статического значения int.
  • Наконец, T2 и 3 соответствующей строки будут добавлены вместе, и TV1.setText

Излишне говорить, что это выглядит очень утомительно, и мне интересно, является ли это единственным/оптимальным способом сделать это или есть лучшая альтернатива?


person mikestody    schedule 02.10.2013    source источник


Ответы (1)


Вы можете реализовать это через адаптер списка. В его функции getView() возьмите кнопку и установите функцию прослушивания onClick. Внутри функции вы можете выполнить все свои вычисления и установить результат в соответствующий TextView.

person sjdutta    schedule 03.10.2013
comment
Я предполагаю, что это связано с правильным использованием ListView? Первоначально я планировал использовать Linear со строками таблицы, поскольку эти строки не будут меняться. Хотя ListView может предложить мне больше гибкости, если я хочу скрыть некоторые из них, верно? - person mikestody; 04.10.2013
comment
Да, вы должны использовать ListView, так как все строки однородны. В макет действия просто добавьте объект ListView. А переходник будет иметь раскладку отдельного ряда. В его getView() можно поместить всю логику - расчет, скрытие/показ объектов и т.д. - person sjdutta; 04.10.2013