2010-05-28 4 views
0

Я немного новичок в Android и занимаюсь разработкой приложения с несколькими довольно сложными видами. Один из представлений предназначен для включения сложного представления, отображающего информацию, связанную с объектами модели, и разделенную на несколько разных видов; навигация которого должна быть достигнута с использованием скользящих эффектов (т. е. скольжение пальца по экрану для перехода от одного экрана к другому и т. д.). Само представление будет использоваться для размещения нескольких наборов представлений для разных типов объектов модели, но с общей структурой, которая повторно используется между ними. В качестве приблизительного примера может отображаться представление о человеке (объекте модели), отображающем несколько представлений деталей: представление общей информации, представление, отображающее список хобби, и представление, отображающее список других лиц связанных с их социальной сетью. Тот же общий вид, если задан модельный объект, представляющий конкретный автомобиль, даст несколько разных представлений: общий вид с подробностями, вид, содержащий фотоизображения для этого транспортного средства, представление, представляющее местоположения, из которых он может быть приобретен, и представление, обеспечивающее список связанных автомобилей. (ПРИМЕЧАНИЕ. Это не настоящие данные, а репрезентативные общие намерения для представления). Подразделы не будут охватывать весь экран недвижимости, а другие функции в представлении должны быть как видимыми, так и способными к взаимодействию с пользователем.Composite Views and View Controllers

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

Я пытаюсь определить подходящий способ использовать платформу Android для достижения наилучшего результата без нарушения целостности структуры. В основном, я пытаюсь определить, как составлять этот увеличенный вид в многократно используемые единицы (т. Е. Общий вид, контроллеры подвидных моделей и отдельные представления деталей). Чтобы быть более конкретным, я пытаюсь определить, лучше ли это представление как составное из нескольких пользовательских классов View или составных из нескольких классов Activity. Я видел несколько примеров пользовательских составных представлений, но они обычно используются для составления простых представлений без сложных контроллеров и без внимания к общему жизненному циклу активности (т. Е. Хранению и извлечению данных, связанных с объектами модели, в зависимости от ситуации). С другой стороны, единственный реальный пример, который я видел в отношении представления, состоящего из совокупности Деяний, - это сама TabActivity, и это не настраивается в соответствии с тем, что необходимо для этого.

Есть ли у кого-нибудь предложения относительно надлежащего способа структурирования моего представления для достижения рамок приложения, которые я ищу? Просмотры? Мероприятия? Что-то другое?

Любое руководство будет оценено по достоинству. Заранее спасибо.

ответ

0

Я пытаюсь определить подходящий способ использовать Андроида рамки для того, чтобы лучше добиться этого, не нарушая целостности рамок.

Телефоны имеют очень ограниченную оперативную память и очень ограниченные процессоры. У вашего обычного устройства Android есть мощь десятилетнего ПК или, что еще хуже. Пожалуйста, не переучивайте свое приложение.

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

Я бы сказал, что «ни один из перечисленных выше».Если вы хотите сделать «пользовательские классы просмотра» для распространения в сообщество разработчиков Android в целом, это одно. Однако для ваших обстоятельств просто создайте свой Views - не подклассифицируйте их. Я определенно настроен на «состав над наследством», когда речь заходит о системе Android View.

IMHO, Activity - ваш контроллер (или, возможно, ведущий, a la MVP, является лучшей архитектурной аналогией), макет XML и их составляющий Views - это уровень представления, а ваша база данных - ваша модель.

0

Я не уверен, что я последовал за все, что вы говорили там, диаграмма, показывающая поток может помочь, но ..

Как правило, вы можете иметь только одну видимую активность в то время. Эта деятельность отвечает за отображение всего представления. Единственное исключение из того, что я видел, - это всплывающее окно с предупреждением. По моему опыту, они, как правило, немного медленны. Обычно каждый раз, когда вы меняете страницы, у вас есть новое действие. Похоже, в вашем случае это может быть каждый раз, когда общий вид меняется.

Вы можете, однако, легко иметь несколько макетов, которые повторно используются в различных действиях. Макеты являются составными, поэтому вы можете, например, иметь один макет для макета детали, который входит в основной макет.

+0

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