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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    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
    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 prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 361
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 361
    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.

  3. #3
    Membre éclairé
    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
    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 prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 361
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 361
    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.

  5. #5
    Membre éclairé
    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
    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 confirmé

    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
    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);
          }
    }

+ Répondre à la discussion
Cette discussion est résolue.

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