Как использовать Parcelable и onClickListeners?

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

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

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

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

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

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


person Cavachon    schedule 09.02.2011    source источник


Ответы (1)


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

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

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

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

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

person Cheryl Simon    schedule 09.02.2011