Как использовать Parcelable и onClickListeners? - PullRequest
2 голосов
/ 09 февраля 2011

Я читал об Parcelables, и чем больше я читаю, тем больше я запутываюсь в этом.

Я пытаюсь найти следующее

  1. Подключитесь к внешнему API для получения данных JSON (в настоящее время работает).
  2. Я просто разбираю объекты JSON в строки, которые помещаю в HashMap. Я использую ListView для отображения данных, которые можно прокручивать (в настоящее время работает)
  3. Я настроил onClickListener, который устанавливает новое намерение (в настоящее время работает)
  4. Вот где я запутался - моя цель - позволить пользователю щелкнуть по элементу в представлении Listview, чтобы вывести его на новый экран с более подробной информацией об элементе, по которому он щелкнул.

Вопросы к пункту 4:

  1. Использую ли я класс Parcelable для передачи объекта JSON в намерение? Это лучший вариант в моем случае?
  2. Если Parcelable - правильный выбор, я бы создал новый класс, который реализует Parcelables для объекта JSON, который будет передан? Я думаю, я действительно не знаю, как поступить. Все примеры, которые я видел, содержат несколько строк, которые они передают в метод writeToParcel (). Не уверен, как это приводит к объектам с несколькими свойствами.

Спасибо, что нашли время, чтобы прочитать.

1 Ответ

1 голос
/ 09 февраля 2011

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

Parcelable - это всего лишь эффективный метод передачи сложных объектов. Если вы пойдете этим путем, то да, вы создадите новый объект, который реализует Parcelable. Ваш метод записи может быть настолько сложным, насколько это необходимо. Если у вас есть сложное дерево объектов, просто заставьте каждый из объектов реализовать Parcelable и переходите к методу writeToParsel этого объекта, чтобы записать эту часть дерева объектов.

Более простой, но менее эффективный метод - просто реализовать все ваши объекты Serializable. Там для вас выполняется сериализация и десериализация, но она заметно медленнее, чем реализация Parcelable.

Если вашей деятельности требуется лишь несколько бит примитивной информации, вы также можете просто передать их как свои собственные дополнительные.

Наконец, вы можете использовать расширение класса Application или какой-то другой синглтон для хранения сложной структуры данных, и просто передать новый Activity небольшой объем информации, необходимый для поиска остальных данных. , Это уменьшает объем данных, которые необходимо передать, и может помочь вам обойти проблемы, связанные с запуском и остановкой операций.

...