2010-05-28 8 views
0

Je suis un peu nouveau sur Android et je suis en train de concevoir une application avec quelques vues assez complexes. L'une des vues est destinée à impliquer une vue complexe affichant des informations associées à des objets de modèle et réparties en plusieurs vues différentes; la navigation est censée être obtenue en utilisant des effets de glissement (c'est-à-dire en faisant glisser son doigt sur l'écran pour traverser d'un écran à l'autre, etc.). La vue elle-même sera utilisée pour héberger plusieurs ensembles de vues pour différents types d'objets de modèle, mais avec une structure générale réutilisée entre tous. À titre d'exemple, la vue peut afficher des informations sur une personne (l'objet modèle), affichant plusieurs vues détaillées: une vue pour des informations générales, une vue affichant une liste de hobbies et une vue affichant une liste d'autres individus associé à leur réseau social. La même vue générale, lorsqu'on donne un objet modèle représentant une voiture donnée, donnerait plusieurs vues différentes: Une vue générale avec des détails, Une vue contenant des images photographiques pour ce véhicule, une vue représentant les endroits où elle pourrait être achetée, et une vue fournissant une liste de voitures connexes. (REMARQUE: ce ne sont pas les données réelles impliquées, mais elles sont représentatives de l'intention générale de la vue). Les sous-vues ne couvriront PAS tout l'écran de l'immobilier et les autres caractéristiques de la vue devraient être à la fois visibles et pouvoir interagir avec l'utilisateur.Vues composites et contrôleurs de vue

L'idée ici est qu'il existe une structure de vue générale qui est réutilisable et qui gérera un ensemble de sous-vues générées dynamiquement en fonction du type d'objet de modèle donné à la vue. J'essaye de déterminer la manière appropriée de tirer parti du cadre d'Android afin de réaliser ceci au mieux sans violer l'intégrité du cadre. Fondamentalement, j'essaie de déterminer comment subdiviser cette plus grande vue en unités réutilisables (c'est-à-dire, une vue générale, des contrôleurs de vues secondaires spécifiques au modèle et des vues détaillées individuelles). Pour être plus précis, j'essaie de déterminer si cette vue est mieux conçue en tant que composite de plusieurs classes View personnalisées ou d'un composite de plusieurs classes Activity. J'ai vu plusieurs exemples de vues composites personnalisées, mais elles sont généralement utilisées pour composer des vues simples sans contrôleurs complexes et sans tenir compte du cycle de vie général de l'activité (stockage et récupération des données liées aux objets du modèle, le cas échéant). D'autre part, le seul exemple réel que j'ai vu concernant une vue composée d'un composite d'Activités est la TabActivity elle-même, et ce n'est pas personnalisable de la manière qui serait nécessaire pour cela.

Est-ce que quelqu'un a des suggestions quant à la façon appropriée de structurer mon point de vue pour atteindre le cadre d'application que je cherche? Vues? Activités? Autre chose?

Toute aide serait appréciée. Merci d'avance.

Répondre

0

Je suis en train de déterminer la manière appropriée pour tirer parti du cadre Android afin de mieux y parvenir sans porter atteinte à l'intégrité du cadre.

Les téléphones ont une RAM très limitée et des processeurs très limités. Votre appareil Android moyen a la puissance d'un PC vieux de dix ans, ou pire. Veuillez ne pas sur-concevoir votre application.

Pour être plus précis, je suis en train de déterminer si ce point de vue est le mieux conçu comme un composite de plusieurs classes de vue personnalisée ou un composite de plusieurs classes d'activité.

Je dirais "aucun de ce qui précède".Si vous souhaitez créer des "classes View personnalisées" à distribuer à la communauté des développeurs Android, c'est une chose. Pour votre cas, il suffit de construire votre Views - ne pas les sous-classer. Je suis définitivement de l'état d'esprit «composition sur héritage» quand il s'agit du système View d'Android.

IMHO, Activité est votre contrôleur (ou peut-être présentateur, un MVP, est la meilleure analogie architecturale), la mise en page XML et leur Views constituante sont la couche de vue, et votre base de données est votre modèle.

0

Je ne suis pas sûr que je suivais tout ce que vous disiez là, un diagramme montrant le flux pourrait aider, mais ..

En général, vous ne pouvez avoir une activité visible à la fois. Cette activité est responsable du rendu de la vue entière. La seule exception à ce que j'ai vu est une fenêtre pop-up, style alerte. Dans mon expérience, ceux-ci ont tendance à être un peu lent cependant. Généralement, vous avez une nouvelle activité chaque fois que vous changez de page. Il semble que dans votre cas, cela puisse être à chaque fois que l'opinion générale change.

Vous pouvez, cependant, facilement avoir quelques mises en page qui sont réutilisées dans diverses activités. Les mises en page peuvent être composées, vous pouvez donc, par exemple, avoir une mise en page pour votre mise en page détaillée qui est incluse dans la mise en page principale.

+0

Ce que j'essaye d'éviter est un contrôleur simple exigeant la connaissance de chaque type d'objet modèle qui pourrait être affiché. Similaire à l'utilisation d'une TabActivity utilisée pour gérer plusieurs activités (ayant ainsi plusieurs activités affichées à la fois), chacune conservant l'ensemble des vues pour un seul objet de modèle. Cela impliquerait l'utilisation de plusieurs activités dans mon cas, mais il ne semble pas y avoir de manière typique de réaliser cela en dehors de la TabActivity, qui ne peut pas être découpée de la manière dont je le souhaiterais. Qui le clarifie du tout? – BillyK

Questions connexes