Лучшая практика деятельности - переключение и изменение вида в Android - PullRequest
3 голосов
/ 20 июля 2011

Я все еще ищу лучшее решение, как использовать макет с меню и панелью инструментов и надувать или запускать действия в Android. Мой вопрос может показаться странным, но я пытаюсь объяснить это на примере.

Допустим, я программирую приложение для Android (удивительно .. я действительно это делаю)

Мое приложение может выполнять следующие действия:

  1. Пользователь может войти в систему [3] или зарегистрироваться [2]. Если он входит в систему, начинается новое действие и отображается его панель управления. Если он регистрируется: начинается процесс для процесса регистрации.
  2. Процесс регистрации: пользователь вводит желаемое имя пользователя и пароль и нажимает кнопку для подтверждения. Его данные будут проверены, и, если они действительны, начинается новое действие, где он может выбрать свои настройки. Backbutton работает, и данные могут быть переданы в новую деятельность. После последней регистрации данные окна будут сохранены и панель управления запущена. Начинать новые занятия - это весело!
  3. Теперь вот где все становится сложнее. Dasboard имеет «панель действий» (вверху) и «панель инструментов» (внизу, как вкладки). Таким образом, все должно быть просмотрено в средней части окна просмотра (теперь называется основным видом). Нет больше переключений активности :(, tho. В настоящее время каждый щелчок мыши удаляет все виды из основного вида и добавляет новый вид. Выглядит великолепно, может быть анимированным и работает как шарм. За исключением: в настоящее время он не динамический.

Так что ... я не знаю, как решить это наилучшим образом. Например: я извлекаю данные из веб-сервиса, создаю из него представление списка, и оно расширяет список. Эту деятельность я не могу запустить, но эти данные нужно поместить в главное окно. Как я могу сделать это наилучшим образом? И это эффективно?

Я тренируюсь, и это моя первая небольшая дискуссия, которую я хочу начать. Так что ... БОРЬБА! ;)

UPDATE: Я видел интересный способ начать деятельность и получить результаты. Начало деятельности через намерения , Можно ли вставить новые / обновленные представления после начала активности? Я бы тогда генерировал свои результаты в отдельном упражнении. Обновите представление. Вернитесь к «панели управления» и загрузите только что обновленное представление. Возможный? Или неэффективно? И как я могу обновить вид из другой деятельности? Мне нужно многому научиться: /

UPDATE2: Хороший пример приложения, которое сделало это: Google+ Жаль, что у меня нет их исходного кода;)

Update3: Что лучше?

  • загрузить новое действие, отключить анимацию и установить выбранную вкладку панели инструментов + отключить функциональность кнопки
  • startActionForResults, извлекать результаты и обновлять текущее представление (все еще не знаю, как это возможно)
  • изменение onflip viewFlipper + обновление данных в перевернутом виде.

Я до сих пор не знаю эффективного решения. Или я что-то упустил? Я только что закончил свою ListActivity для извлечения данных из моего веб-сервиса. Но это все еще работает в отдельном мероприятии. Как я могу внедрить его в мой «основной вид» сейчас? Конечно ... я мог бы установить список моего собственного адаптера. Но в настоящее время я обновляю и извлекаю данные с сервера, когда создаю список.

Боюсь, это может быть единственным ответом, который я получу: Внедрить внешние намерения в основное задание

UPDATE4: Я что-то пробую. Основываясь на ответе nininho (спасибо!), Я пробую следующий подход:

  1. Запустите Dashboardactivity и создайте ViewFlipper.
  2. Каждый клик панели инструментов представляет определенную страницу ViewFlipper.
  3. На каждой странице реализован Listadapter, который показывает разные результаты (разные запросы веб-сервиса). (ListView, GridView, с изображением профиля, без изображения профиля)
  4. На Панели инструментов щелкните, запустите AsyncTask или Сервис и уведомите Список на текущей странице об изменении данных. (Конечно, если данные изменились). Перейти на страницу, на которой была нажата кнопка.
  5. Реализация updatefeature. При прокрутке вниз списка = получить больше данных и добавить его. Обновите другие списки автоматически через 5 минут. или обновить список по нажатию кнопки обновления.

PRO на данный момент : кнопка автономна для всей активности. Page-flip-анимация возможна. Асинхронное обновление списков и возможность переключения на другой список.

CON: ... у кого-нибудь есть? Как насчет эффективности такого подхода? Несет ли ViewFlipper всю информацию, чтобы производительность снижалась, или же Viewflipper перерабатывает свои представления (например, ListView)?

UPDATE5: Если у меня будет время, я сделаю все здесь более читабельным и обсуждаемым. Не сердись на меня за то, что я читаю мой мусор;)

1 Ответ

1 голос
/ 21 июля 2011

Насколько я понимаю, вы хотите, чтобы ваше приложение запускалось, извлеките некоторые данные из Интернета и после этого отобразите эти данные на главном экране.

Я не вижу необходимости во втором действии для извлечения данных, потому что из вашего объяснения вы хотите использовать его только для извлечения данных, поэтому лучшим подходом будет:

  1. Создать одно действие (панель инструментов)
  2. Запустите AsyncTask или службу в фоновом режиме для извлечения данных.
  3. Когда выборка заканчивается, уведомите активность, что она закончилась.
  4. Измените панель управления, чтобы показать список (вы можете использовать ViewSwitcher, если вам нужна анимация, или просто создать макет с невидимым списком, а затем изменить на видимый).

ps: вы можете использовать ListView вне ListActivity, просто создайте ListAdapter для создания элементов ListView и добавьте его в качестве адаптера для ListView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...