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 :

Modification Police ListView


Sujet :

Composants graphiques Android

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut Modification Police ListView
    Bonjour à tous,

    je rencontre un problème lorsque j'essai de modifier la police de ma listView. Pour m'expliquer voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //Création d'un SimpleAdapter qui se chargera de mettre les items présent dans la list (listItem) dans la vue affichageitem
    SimpleAdapter sadaptbis = new SimpleAdapter (this.getBaseContext(), listItem,R.layout.affichageitembis, new String [] {"name", "adresse", "CP", "ville", "average_price", "distance"}, new int[] {R.id.nom, R.id.adresse, R.id.CP, R.id.ville, R.id.prixMoyen, R.id.distance});
     
     
    verdana = Typeface.createFromAsset(getAssets(), "verdana.ttf");
    nom = (TextView)findViewById(R.id.nom);
    nom.setTypeface(verdana);
     
    //J'attribut à ma listView l'adapter que je viens de créer
    maListePerso.setAdapter(sadaptbis);
    Je un pointeur null à la ligne 8, ce qui est normal puisque R.id.nom fait parti du fichier XML qui décrit la liste view, alors que le fichier XML courant comporte d'autre chose dont la listView, mais c'est "affichageitembis" qui décrit la style de chaque item.

    Je voudrais donc modifier la police d'une TextView dans un item mais je n'y arrive pas et je sais pas comment faire.

    Je vous remercie

  2. #2
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 604
    Points : 18 521
    Points
    18 521
    Par défaut
    A mon avis c'est nom qui est null.
    Tu ne dois pas être dans une Activity qui utilise un layout avec un TextView R.id.nom il doit surement être dans R.layout.affichageitembis.

    De toute façon ce que tu fais à cet endroit ne sert à rien.

    Dans le fichier R.layout.affichageitembis dans la TextView met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    android:typeface="verdana"
    Mais je ne sais pas si il connait verdana.

    Ou sinon tu peux faire ton propre Adapter avec getView et dedans tu met la police.
    Keith Flint 1969 - 2019

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    Dans l'activité j'ai un fichier XML utilisé pour la structure général de l'activité mais j'ai également un autre fichier XML utilisé pour la mise en forme des items de la listView. Et dans ce deuxième fichier XML il y a bien R.id.nom

    Verdana n'est pas pris en compte

  4. #4
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 604
    Points : 18 521
    Points
    18 521
    Par défaut
    Oui j'avais très bien compris le truc.
    Le layout de l'Activity ne connait pas R.id.nom d'où le null pointer exception.

    Tu dois créer ton propre Adapter c'est extrêmement simple.

    http://mickael-lt.developpez.com/tut...iser-listview/
    http://a-renouard.developpez.com/tut...iser-listview/

    Pour faire simple, il te fait une classe qu'extends BaseAdapter.
    Le constructeur va recevoir un Context et listItem.

    Tu mets ça aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mInflater = LayoutInflater.from(mContext);
    verdana = Typeface.createFromAsset(getAssets(), "verdana.ttf");
    Et dans getView :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      LinearLayout layoutItem;
     
      if (convertView == null) {
        layoutItem = (LinearLayout) mInflater.inflate(R.layout.personne_layout, parent, false);
      } else {
        layoutItem = (LinearLayout) convertView;
      }
     
     
      TextView tv_Nom = (TextView)layoutItem.findViewById(R.id.nom);
      tv_Nom.setTypeface(verdana);
      tv_Nom.setText(...);
     
      return layoutItem;
    Bon je te mâche beaucoup trop le travail et tu risques de ne rien apprendre.
    Là t'as plus rien du tout à faire.
    Keith Flint 1969 - 2019

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    Je te remercie, je vais tester ça

    EDIT: cependant moi je n'ai pas de class Adapter puisque j'utilise SimpleAdapter. Je ne vois donc pas comment je pourrais utiliser ta solution avec ce que j'ai en place.

    Je récupère ces infos d'une base de données en faite.

    EDIT 2:

    Car mon je récupère les infos d'une BDD de cette manière:

    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{
    	    	        	JSONArray jArray = new JSONArray(result);
     
    	    	            for(int i=0;i<jArray.length();i++)
    	    	            {
     
    	    	            		json_data = jArray.getJSONObject(i);
    	    	            		donnees.add(json_data.getString("name"));
    	    	            		donnees.add(json_data.getString("adresse"));
    	    	            		donnees.add(json_data.getString("CP"));
    	    	            		donnees.add(json_data.getString("ville"));
    	    	            		donnees.add(json_data.getString("average_price"));
    	    	            		donnees.add(json_data.getString("villedelivered"));
    	    	            		donnees.add(json_data.getString("cpdelivered"));
     
    	    	             }
     
    	    	       }
    Ensuite je fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, donnees);
    Et après je fait ça:

    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
     
    //Récupération de la listview crée dans le fichier main.xml
    		  	        maListePerso = (ListView)findViewById(R.id.listResto);
     
    		  	        for (i=0; i<= compteur - 1; i++ )
    		  	        {
     
    		  	        	map = new HashMap<String,String> ();
     
    		  	        	if (i != 0)
    		  	        	{
    		  	        		j++;
    		  	        	}
     
    		  	        	map.put("name", adapter.getItem(j));
    		  	        	j++;
    		  	        	map.put("adresse", adapter.getItem(j));
    		  	        	j++; 
    		  	        	map.put("CP", adapter.getItem(j));
    		  	        	j++; 
    		  	        	map.put("ville", adapter.getItem(j));
    		  	        	j++; 
    		  	        	map.put("average_price", adapter.getItem(j));
    		  	        	j++;
    		  	        	map.put("villedelivered", adapter.getItem(j));
    		  	        	j++;
    		  	        	map.put("cpdelivered", adapter.getItem(j));
     
     
    		  	            listItem.add(map);
     
    		  	        }
     
    		  	        //Création d'un SimpleAdapter qui se chargera de mettre les items présent dans notre list (listItem) dans la vue affichageitem
    		  	        SimpleAdapter sadapt = new SimpleAdapter (this.getBaseContext(), listItem,R.layout.affichageitembis, new String [] {"name", "adresse", "CP", "ville", "average_price"}, new int[] {R.id.nom, R.id.adresse, R.id.CP, R.id.ville, R.id.prixMoyen});
     
     
     
     
    		          //texteViewAdresseSiteWeb.setTypeface(verdana, verdana.BOLD)
     
    		  	        //On attribut à notre listView l'adapter que l'on vient de créer
    		  	        maListePerso.setAdapter(sadapt);
    Je vois pas comment je pourrais faire intervenir mon AdapterPersonnalisé...

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Et quelque chose t'empêche d'hériter de SimpleAdapter ?

    On fait de l'orienté-objets... ne l'oublions pas !
    Bref un truc genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class SimpleFontAdapter extends SimpleAdapter
    {
         ... copier tous les constructeurs de SimpleAdapter (eclipse le fait tout seul)...
     
         @Override
         public View getView(...)
         {
              View ret = super.getView(...);
     
              TextView tv_Nom = (TextView)layoutItem.findViewById(R.id.nom);
              tv_Nom.setTypeface(verdana);
          }
    }
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    Oui je n'oubli pas, t'inquiète pas mais j'avoue que j'ai du mal à voir.

    J'ai Edité mon poste du dessus

    Merci pour le tuyau de SimpleAdapter, mais il ne me reconnait pas la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    prout = Typeface.createFromAsset(getAssets(), "verdana.ttf");
    à cause de getAssets()...

  8. #8
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 604
    Points : 18 521
    Points
    18 521
    Par défaut
    Ça se fait simplement une classe qu'extends BaseAdapter et qui reçois un JSONArray.

    Il faut juste mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @Override
    public int getCount() {
      return array.length();
    }
    Et dans getView :

    Moi j'aime pas les SimpleAdapter.
    Keith Flint 1969 - 2019

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    La j'étais parti avec Simple Adapter car je ne comprend vraiment pas comment faire avec ce que tu me proposes thierrybenji. Car la classe Adapter je l'ai comprise, mais c'est après dans l'activité comme je fais pour dire ce que je récupère là va dans ce textView etc... Ce que je fais pour le moment avec un SimpleAdapter. Car actuellement le SImpleAdapter utilise une liste de HashMap

    Après l'option de nicroman ne me reconnait pas getAssets()... Donc je ne sais pas trop

  10. #10
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Non mais il faut creuser un peu... on va pas tout programmer à ta place.... chercher les docs, utiliser javadocs, lire les tutoriaux (les bons hein ! ), etc...

    getAssets() marche dans un context (activité,etc...)
    Donc il faut l'utiliser sur un Context ! A toi de chercher pour savoir comment le récupérer ce context...

    La solution à base de SimpleAdapter marche, c'est vrai, mais c'est vraiment utiliser une foreuse à pointe diamant pour faire un trou dans une feuille de papier ! Rien qu'écrire dans mon code un truc genre: List<String,Hashtable<String,String>> me file des boutons

    La solution de thierrybenji est LA solution propre... utilisation d'un BaseAdapter, avec une classe "custom" ['data class'] pour les getItem()... On au pire, conservation des JSONObject....
    Java à l'avantage d'être un langage fortement typé, c'est pas pour tout transformer en String (méthode javascript/php).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  11. #11
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 604
    Points : 18 521
    Points
    18 521
    Par défaut
    Une fois que t'as ta classe qu'extends BaseAdapter.

    Dans ton Activity tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MonAdapter monAdapter = new MonAdapter(this, array);
    listView.setAdapter(monAdapter);
    getAssets c'est une méthode d'Activity probablement, fais ça dans le constructeur de l'Adapter :
    Bon de toute façon que ton Custom Adapter extends SimpleAdapter ou BaseAdapter, c'est quasiment la même chose.
    Dans le constructeur il y aura forcement un Context, avec ce Context tu pourra récupérer ta font qui est dans les assets.

    Et dans getView tu pourra appliqué cette font à n'importe quelle TextView.
    Keith Flint 1969 - 2019

  12. #12
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    Je ne viens pas ici pour que l'on me programme ce que j'ai à faire mais simplement parce que je ne comprend pas.

    Mais je vais me débrouiller.

    Merci à vous deux.

  13. #13
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 604
    Points : 18 521
    Points
    18 521
    Par défaut
    En fait tout est expliqué dans le 1er lien que je t'ai donné :
    http://mickael-lt.developpez.com/tut...iser-listview/

    Dans l'exemple proposé, il construit une ListView avec une ArrayList<Personne> et il a créé la classe Personne

    Ce tuto est trop bien

    Après tu peux peuplé ta ListView avec ce que tu veux, un JSONArray, une ArrayList, un Cursor, etc...

    Une fois qu'on a compris le truc c'est super simple.
    Il suffit de faire un constructeur et remplir getView et c'est fini.
    Keith Flint 1969 - 2019

  14. #14
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    Je te remercie beaucoup, je nage, j'essai de faire fonctionner ça en vain pour le moment.

    Merci beaucoup pour votre aide.

  15. #15
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 604
    Points : 18 521
    Points
    18 521
    Par défaut
    http://mickael-lt.developpez.com/tut...iser-listview/
    Télécharge DVP_List2.zip et importe le dans Eclipse.

    Il peuple une ListView avec une ArrayList.
    Toi ça va être pareil mais avec un JSONArray.

    T'as quasiment qu'un copier/coller à faire.
    Keith Flint 1969 - 2019

  16. #16
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    Je te remercie beaucoup.

    Je vais regarder ça

    EDIT:

    J'obtiens un FC à cause d'un pointeur null mais je ne vois pas comment ça se fait.

    Voici le code de mon adapter:

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    package com.restomaniak.alpha;
     
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
     
    import android.content.Context;
    import android.graphics.Typeface;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.LinearLayout;
    import android.widget.TextView;
     
    public class AdapterPersoBis extends BaseAdapter {
     
    	private List<String> maListe;
    	private Context mContext;
    	private LayoutInflater mInflater;
    	Typeface verdana;
     
     
    	public AdapterPersoBis (Context context, ArrayList<String> donnees)
    	{
    		mContext = context;
    		maListe = donnees;
    		mInflater = LayoutInflater.from(mContext);
    		verdana = Typeface.createFromAsset(mContext.getAssets(), "verdana.ttf");
     
     
    	}
     
    	public int getCount() {
    		return maListe.size();
    		// TODO Auto-generated method stub
     
     
    	}
     
    	public Object getItem(int position) {
    		// TODO Auto-generated method stub
     
    		return maListe.get(position);
    	}
     
    	public long getItemId(int position) {
    		// TODO Auto-generated method stub
    		return 0;
    	}
     
    	public View getView(int position, View convertView, ViewGroup parent) {
    		// TODO Auto-generated method stub
    		LinearLayout layoutItem;
    		  //(1) : Réutilisation des layouts
    		  if (convertView == null) {
    		  	//Initialisation de notre item à partir du  layout XML "personne_layout.xml"
    		    layoutItem = (LinearLayout) mInflater.inflate(R.layout.affichageitembis, parent, false);
    		  } else {
    		  	layoutItem = (LinearLayout) convertView;
    		  }
     
    		  //(2) : Récupération des TextView de notre layout      
    		  TextView tv_Nom = (TextView)layoutItem.findViewById(R.id.nom);
    		  TextView tv_Adresse = (TextView)layoutItem.findViewById(R.id.adresse);
    		  TextView tv_CP = (TextView)layoutItem.findViewById(R.id.CP);
    		  TextView tv_Ville = (TextView)layoutItem.findViewById(R.id.ville);
    		  TextView tv_PrixMoyen = (TextView)layoutItem.findViewById(R.id.prixMoyen);
    		  TextView tv_Distance = (TextView)layoutItem.findViewById(R.id.distance);
    		  TextView tv_prout = (TextView)layoutItem.findViewById(R.id.prixMoyeneuro);
     
    		  //(3) : Renseignement des valeurs       
    		  tv_Nom.setText((CharSequence) maListe.get(position));
    		  tv_Adresse.setText((CharSequence) maListe.get(position));
    		  tv_CP.setText((CharSequence) maListe.get(position));
    		  tv_Ville.setText((CharSequence) maListe.get(position));
    		  tv_PrixMoyen.setText((CharSequence) maListe.get(position));
    		  tv_Distance.setText((CharSequence) maListe.get(position));
    		  tv_prout.setText((CharSequence) maListe.get(position));
     
    		  /*//(4) Changement de la couleur du fond de notre item
    		  if (mListP.get(position).genre == Personne.MASCULIN) {
    		    layoutItem.setBackgroundColor(Color.BLUE);
    		  } else {
    		  	layoutItem.setBackgroundColor(Color.MAGENTA);
    		  }*/
     
    		  //On retourne l'item créé.
    		  return layoutItem;
    	}
     
    }
    Ensuite voici comme je traite l'ArrayListe, car au final j'utilise ArrayList également et pas un JSONArray:

    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
     
    //recuperation des donnees json
      	        try{
      	        	JSONArray jArray = new JSONArray(result);
     
      	            for(int i=0;i<jArray.length();i++)
      	            {
     
      	                   json_data = jArray.getJSONObject(i);
      	                   donnees.add(json_data.getString("name"));
      	                   donnees.add(json_data.getString("adresse"));
      	                   donnees.add(json_data.getString("CP"));
      	                   donnees.add(json_data.getString("ville"));
      	                   donnees.add(json_data.getString("average_price"));
      	                   donnees.add(json_data.getString("long"));
      	                   donnees.add(json_data.getString("lat"));
     
     
      	             }
     
     
      	       }
      		    catch(JSONException e1)
      		    {
      		    	Log.i("tagjsonexp",""+e1.toString());
      		    } catch (ParseException e1) {
     
      		     Log.i("tagjsonpars",""+e1.toString());
      	       }
     
     
          	  //Création et initialisation de l'Adapter pour les personnes
                AdapterPersoBis adapterProut = new AdapterPersoBis(this, donnees);
     
                //Récupération du composant ListView
                ListView list = (ListView)findViewById(R.id.listResto);
     
                //Initialisation de la liste avec les données
                list.setAdapter(adapterProut);
    J'ai un pointeur null sur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    list.setAdapter(adapterProut);
    Je sais pas si vous voyez une grosse erreur, mais en tout cas il y en a une malheureusement.

  17. #17
    Membre habitué Avatar de linked
    Profil pro
    Développeur Android
    Inscrit en
    Mai 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Android

    Informations forums :
    Inscription : Mai 2008
    Messages : 88
    Points : 133
    Points
    133
    Par défaut
    Quand tu as un NullPointerException, le mieux c'est que tu mette des:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Log.d("tag","test ma variable:"+maVariable)
    Sinon je dirais que "donnees" est null peut être car "result" est null aussi. A voir avec le code que j'ai mis.
    Applications et jeux gratuits sur http://www.kamaxandroid.com

  18. #18
    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
    Pour les NPE, le mieux est quand même de mettre un simple breakpoint et de regarder avec le débogueur (sauf dans le cas où la NPE est déclenchée par une API interne inaccessible ... là, c'est plus drôle).
    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

  19. #19
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    donnees n'est pas nul car j'ai appliqué ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    System.out.println("Resultat" + donnees.size());
     
      	        for (int p=0; p<donnees.size(); p++)
      	        {
      	        	System.out.println("Infos " + p + " = " + donnees.get(p));
      	        }
    et dans le logcat je récupère ça:



    EDIT: c'est bon je sais pas comment ça se fait cette ligne avait disparu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setContentView(R.layout.listeresto);
    Toutes les infos s'affiche mais pas comme je le souhaite, car il devrait me créer seulement deux items et il m'en crée 14 car je reçois 14 infos, mais en faite il y en a 7 par items

  20. #20
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 604
    Points : 18 521
    Points
    18 521
    Par défaut
    Si :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list.setAdapter(adapter);
    Déclenche un Null Pointer Exception, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.println("list : "+liste);
    System.out.println("adapter : "+adapter);
    Et après ça tu sais quel variable est null.

    Si tu n'as pas le bon nombre de ligne c'est que tu fais mal ton ArrayList.

    T'as quoi dans :
    public int getCount() ?
    Keith Flint 1969 - 2019

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Modif dans Listview
    Par petchy dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 18/03/2014, 10h04
  2. [OL-2003] modif police volet de lecture
    Par frediveut dans le forum Outlook
    Réponses: 1
    Dernier message: 03/11/2009, 21h05
  3. Modification police des axes sur un diagramme
    Par mikedavem dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 23/01/2008, 12h39
  4. Probleme lors de la modification de la police
    Par amelieh dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 24/10/2005, 16h12
  5. [W3C] Police d'écriture insensible aux modifs
    Par Gribouille26 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/09/2004, 12h36

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