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

Composants graphiques Android Discussion :

ListView + PDF


Sujet :

Composants graphiques Android

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 11
    Points : 9
    Points
    9
    Par défaut ListView + PDF
    Bonjour tout le monde je viens chercher un peu d'aide pour la fin de mon application : mon application est composé de plusieurs onglet et dans chaque onglets un listView et j'aimerai que chaque item de chaque listview corresponde a un PDF lorsque je clique dessus voila mon code et une screen :

    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
    maListViewPerso14.setOnItemClickListener(new OnItemClickListener() {
     
                                      public void onItemClick(AdapterView<?> a, View v, int position, long id) {
            //on récupère la HashMap contenant les infos de notre item (titre, description, img)
                                      HashMap<String, String> map = (HashMap<String, String>) maListViewPerso14.getItemAtPosition(position);
     
     
     
     
                                      try{
     
                                                      FileOutputStream fos = openFileOutput("test.pdf", MODE_WORLD_READABLE);
                                                                            // Fichier accessible en lecture par d'autres applications
                                                                            // ... écriture dans le fichier
                                                                            //
                                                                            File f = getFileStreamPath("test.pdf");
                                                                            String name = f.getAbsolutePath();
                                                     Uri uri = Uri.parse("file://" + name);
                                                     Intent intent = new Intent(Intent.ACTION_VIEW);
                                                     intent.setDataAndType(uri, "application/pdf");
                                                     startActivity(intent);
                                       }
                                       catch (FileNotFoundException e)
                                       {
                                                     // Cas d'erreur de création de fichier
                                                     Log.d("xx", "Erreur creation fichier ", e);
                                       }
                                       catch (ActivityNotFoundException e)
                                       {
                                                     // Cas d'erreur si pas de lecteur PDF installé
                                                     Log.d("xx", "Erreur affichage PDF", e);
                                       }
                                      }
     
     
                                     });
                                     };
    }
    Sauf que mon code présente un problème, lorsque je clique sur un Item de ma listView le reader PDF se lance mais il m'indique que le PDF est vide (taille = 0ko) et dans mon code eclipse, j'ai un avertissement sur
    FileOutputStream fos plus précisément sur le "fos" avec comme avertissement : the value of the local variable fos is not used.
    Je pense que ça vient de là mais je ne vois pas comment résoudre cette erreur ...
    Merci d'avance et bonne soirée


  2. #2
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Pourquoi FileOutputStream et non FileInputStream ? tu veux bien lire des fichiers existants non ?
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Oui , exact je veux lire un pdf situé dans les assets que faut 'il changer dans mon code ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileOutputStream fos = openFileOutput("test.pdf", MODE_WORLD_READABLE);
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileIntpuStream fos = openFileInput("test.pdf", MODE_WORLD_READABLE);
    ça ne marche pas


    et lorsque je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileIntpuStream fos = openFileInput("test.pdf");
    Idem fos inutilisé et donc lorsque je clique sur mon item : le reader me dit erreur fichier vide taille = 0ko

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Ben ... oui, ta variable n'est pas utilisée.

    Regarde bien ton code : tu la déclares et l'initialises sur la même ligne et tu ne l'utilises plus du tout après.

    Ton PDF se trouve dans le dossier "assets" j'imagine de ton projet.
    Dans ce cas, il faut plutôt que tu passes par un getRessources().getAssetManager().open(stringFileName); pour avoir le flux.

    Mais tu n'utilises absolument pas celui-ci, vu que tu lance une Intent avec le chemin du fichier (à priori erroné).
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Finalement j'ai fait comme ça mais il y a peut etre plus simple ?

    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
    44
    45
    46
    47
    48
     
            maListViewPerso14.setOnItemClickListener(new OnItemClickListener() {
    			public void onItemClick(AdapterView<?> a, View v, int position, long id) {
    				String nomFichierDansAsset = "test.pdf";
            		  String nomFichierTemp = "truc.pdf";
     
            		  if (copyAssetToTempFile(nomFichierDansAsset, nomFichierTemp)) {
            		    try {
            		      String name = getFileStreamPath(nomFichierTemp).getAbsolutePath();
     
            		      Uri uri = Uri.parse("file://" + name);
            		      Intent intent = new Intent(Intent.ACTION_VIEW);
            		      intent.setDataAndType(uri, "application/pdf");
            		      startActivity(intent);
            		    } catch (ActivityNotFoundException e) {
            		      // Cas d'erreur si pas de lecteur PDF installé
            		      Log.d("xx", "Erreur affichage PDF", e);
            		    }
            		  }
            		}
    			private boolean copyAssetToTempFile(String nomFichierAsset,
    				    String nomFichierTemp) {
    				    boolean result = true;
     
    				    try {
    				      byte[] buffer = new byte[512];
    				      FileOutputStream fos = openFileOutput(nomFichierTemp, MODE_WORLD_READABLE);
     
    				      InputStream is = getAssets().open(nomFichierAsset);
    				      int bytesRead = is.read(buffer);
    				      while (bytesRead > 0) {
    				        fos.write(buffer, 0, bytesRead);
    				        bytesRead = is.read(buffer);
    				      }
    				      fos.close();
    				      is.close();
     
    				    } catch (FileNotFoundException e) {
    				      // Cas d'erreur de création de fichier
    				      Log.d("xx", "Erreur creation fichier ", e);
    				      result = false;
    				    } catch (IOException e) {
    				      // Cas d'erreur de lecture de fichier
    				      Log.d("xx", "Erreur lecture fichier", e);
    				      result = false;
    				    }
    				    return result;
    				  }

    J'ai une nouvelle question , lorsque je clique sur n'importe quel item de ma listview mon PDF ce lance or je voudrais que un item en particulier soit associé avec un pdf ( pas toute ma listview )

    Comment faire ?
    Merci

Discussions similaires

  1. Affichage de documents PDF
    Par Dajon dans le forum C++Builder
    Réponses: 5
    Dernier message: 10/10/2002, 12h36
  2. listview ??
    Par Galdarion dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/09/2002, 18h02
  3. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 12h49
  4. ListView
    Par SnickeursMan dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/08/2002, 11h42
  5. [CR] exporter en PDF
    Par Nathy dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 16/05/2002, 10h27

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