IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Bonne méthode pour afficher/stocker de longs textes


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 154
    Par défaut Bonne méthode pour afficher/stocker de longs textes
    Bonjour,

    J'ai une application composée de différentes activity composées de textes longs. J'utilise strings.xml pour stocker les textes.
    Mais si je continue ainsi, je vais avoir un fichier strings.xml énooorme et je suis sûr qu'il existe une meilleure solution.

    Quelle est la meilleure méthode pour afficher de longs textes (découpés en chapitres comme un livre) et où stocker ces longs textes ?

    Merci d'avance

  2. #2
    Membre confirmé Avatar de cad13
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 247
    Par défaut
    Personnellement, j'utiliserais des fichiers texte...

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 154
    Par défaut
    Citation Envoyé par cad13 Voir le message
    Personnellement, j'utiliserais des fichiers texte...
    ok. merci pour m'avoir mis sur cette voie
    j'ai crée un fichier texte.txt dans le dossier assets
    mais je ne réussis pas à l'afficher dans mon activity

    J'ai recherché dans google et trouvé quelques pistes avec bufferefreader et inputstream mais sans réussir... pour le moment.
    Suis-je sur la bonne voie ?

  4. #4
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Si tu veux que ton application soit multilingues assez simplement, garde le principe du string.xml .
    Si toutefois le fichier d'installation (apk) est trop grand, une autre solution serait de placer tes grosses ressources sur internet. Et de récupérer ses ressources via un serveur à la première initialisation de ton application.

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 154
    Par défaut
    Citation Envoyé par MrDuChnok Voir le message
    Si tu veux que ton application soit multilingues assez simplement, garde le principe du string.xml .
    Si toutefois le fichier d'installation (apk) est trop grand, une autre solution serait de placer tes grosses ressources sur internet. Et de récupérer ses ressources via un serveur à la première initialisation de ton application.
    Excellente idée. Je regarde comment faire et je découvre URLConnection + InputStream + convertir le HTML en CharSequence intégrable dans une TextView.

    Ça fait du boulot, mais je me lance

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Par défaut
    voici un bout de code si tu veux lire ligne par ligne ton fichier texte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    try {
             //IMPORTANT : Ouverture spécifique d'un fichier en Android 
          BufferedReader entree = new BufferedReader(new InputStreamReader(R.this.getAssets().open("ton_fichier.txt")));  
    					 
    //Exemple d'utilisation du fichier avec une BufferedReader --> classique en Java 
                 //lecture de la première ligne
    	String ligne = entree.readLine();
          do{
                //Affiche la ligne récupéré
    	textView.setText(ligne);	
    	//Lecture de la ligne suivante
    	ligne=entree.readLine();
             }
             //Tant que l'on est pas a la fin du fichier
             while(ligne!=null); 
          } 
    catch (IOException e) {
    		e.printStackTrace();
    		}

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 154
    Par défaut
    Citation Envoyé par matleb Voir le message
    voici un bout de code si tu veux lire ligne par ligne ton fichier texte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    try {
             //IMPORTANT : Ouverture spécifique d'un fichier en Android 
          BufferedReader entree = new BufferedReader(new InputStreamReader(R.this.getAssets().open("ton_fichier.txt")));  
    					 
    //Exemple d'utilisation du fichier avec une BufferedReader --> classique en Java 
                 //lecture de la première ligne
    	String ligne = entree.readLine();
          do{
                //Affiche la ligne récupéré
    	textView.setText(ligne);	
    	//Lecture de la ligne suivante
    	ligne=entree.readLine();
             }
             //Tant que l'on est pas a la fin du fichier
             while(ligne!=null); 
          } 
    catch (IOException e) {
    		e.printStackTrace();
    		}
    Merci.

  8. #8
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 154
    Par défaut
    J'ai crée un fichier texte.txt que j'ai mis dans assets.
    Par contre mon code a un (ou plusieurs soucis) et je ne sais pas résoudre cela.

    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    package com.formation.cor;
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
     
     
     
    public class Hud extends Activity {
    	private static TextView textView;
     
    		public void onCreate(Bundle savedInstanceState) {
    			super.onCreate(savedInstanceState);
    			//on associe le layout
    			setContentView(R.layout.hud);
     
    				try {
    					//IMPORTANT : Ouverture spécifique d'un fichier en Android 
    					BufferedReader entree = new BufferedReader(new InputStreamReader(this.getAssets().open("texte.txt")));  
     
    					//Exemple d'utilisation du fichier avec une BufferedReader --> classique en Java 
    		            //lecture de la première ligne
    					String ligne = entree.readLine();
     
    					do{
    						//Affiche la ligne récupérée
    						textView.setText(ligne);	
    						//Lecture de la ligne suivante
    						ligne=entree.readLine();
    						}
    						//Tant que l'on est pas a la fin du fichier
    						while(ligne!=null); 
    					} 
    						catch (IOException e) {
    						e.printStackTrace();
    						}
     
    		}
     
    }
    Le logcat me dit pleins de choses que je ne sais pas déchiffrer:
    11-24 01:59:33.473: WARN/ActivityManager(68): Activity destroy timeout for HistoryRecord{44010d00 com.formation.cor/.Main}
    11-24 01:59:33.486: WARN/ActivityManager(68): Activity destroy timeout for HistoryRecord{43ec2910 com.formation.cor/.Hud}
    11-24 02:03:10.115: DEBUG/SntpClient(68): request time failed: java.net.SocketException: Address family not supported by protocol

    Si quelqu'un voit mon erreur, je lui en serais très reconnaissant

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Par défaut
    Je pense que ton erreur vient de ton "this.getAssets().open" met "R.this.getAssets().open" à la place

  10. #10
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 154
    Par défaut
    Ça me donne 2 erreurs d'un coup sur la même ligne:
    - No enclosing instance of the type R is accessible in scope
    - The method getAssets() is undefined for the type R

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/04/2008, 15h41
  2. Réponses: 2
    Dernier message: 22/08/2006, 08h28
  3. Réponses: 20
    Dernier message: 27/06/2006, 17h42
  4. Réponses: 2
    Dernier message: 04/06/2006, 18h53
  5. [SWING][THREAD]Méthodes pour afficher une Frame
    Par pompidouwa dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 05/05/2004, 10h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo