Activités de chargement dynamique de la mise en page XML dans Android
Est-il possible de charger une activité xml du fichier de mise en page à partir d'une ressource stockés dans l'appareil (en db ou une partie des ressources) et les charger dynamiquement lorsque cette activité est commencé ? L'idée est d'envoyer à l'appareil à partir d'un service web. Merci.
source d'informationauteur xain
Vous devez vous connecter pour publier un commentaire.
Si vous essayez de gonfler un fichier XML qui n'a pas été inclus dans le processus de génération, je ne pense pas qu'il est actuellement possible. C'est à partir de la java-docs de l' LayoutInflater classe:
À compter de la date de cette publication, Android ne contient qu'un moyen intégré pour gonfler mise en page XML stocké comme une disposition de ressources dans le fichier APK. Si vous voulez gonfler similaire (ou autre) XML à partir d'autres sources, vous aurez à mettre en œuvre vous-même, peut-être par le clonage de la logique de la
LayoutInflater
classe. Être averti que Android est beaucoup de travail pour optimiser la lecture et l'analyse des fichiers de ressources au moment de l'exécution, donc si vous prévoyez sur le chargement de ce, de façon dynamique sur votre propre, être préparé pour gonfler un peu plus lent.Si vous devez charger des infos à partir d'une base, peut-être qu'il vous aide à faire une base XML, et d'insérer des infos sur elle, comme une table ou quelque chose comme ça. Vous pouvez essayer quelque chose comme ceci:
Dans une table de base de XML:
Et le code:
Dans le fichier XML, il n'existe que le principal bar, avec le nom, le titre, la valeur et l'unité. Et dinamically, ajouter des lignes avec de l'information et de style.
Peut-être que ça aide, ça fonctionne pour moi.
Oui.
@Chirag Raval dit.
Ne le pense pas. Parce que la mise en page
reference (id)
que vous appelez à partirR.layout.XPTO
est pré-compilé. Vous ne pouvez pas ajouter des valeurs au cours de l'exécution.Un moyen terme que vous pouvez utiliser (et que j'utilise dans certaines applications) est de définir un nombre prédéterminé o "blocs" qui peuvent être arrangés selon les données envoyées.
Exemple:
Charge:
text_block.xml
puisimage_block.xml
et puistext_and_image_block.xml
Le gars à flipkart ont créé une alternative pour Android LayoutInflater qui accepte de JSON, qui peut être hébergé n'importe où.Et il accepte également des données en option pour la liaison de données natif gonflé vues.
Échantillon JSON pour Afficher
Échantillon de Données JSON:
Et dynamiquement Gonfler: Utiliser le ProteusView en l'incluant dans le projet:
Voici une introduction par les auteurs eux-mêmes:
https://www.slideshare.net/mobile/KiranKumar1320/proteus-android-layout-engine
Avoir un coup d'oeil ici:
https://github.com/flipkart-incubator/proteus/blob/master/README.md
Il n'est pas possible "out of the box" comme expliqué dans d'autres réponses, mais le projet open source ItsNat Droid fait un gros effort pour offrir un rendu de Android native XML, base de ressources téléchargées à distance (HTTP) similaire à un "native Android, le navigateur natif Android basé sur XML au lieu de HTML et des scripts Beanshell au lieu de JavaScript.
Évidemment, la performance ne va pas être le même que local pré-compilé ressources autochtones. Ceci est similaire à la comparaison d'une application web à une application de bureau, une application web est très bien pour la plupart des besoins, mais n'est pas ok pour les jeux, Android locale/à distance est très similaire.