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 :

Comment créer une GridView à partir d'une ListView ?


Sujet :

Composants graphiques Android

  1. #21
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 104
    Points : 66
    Points
    66
    Par défaut
    Bon j'ai réussi à avoir un affichage plus correct en modifiant l'adapter comme ce ci :

    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
     
     
    package com.hades_files_explorer;
     
    import java.util.ArrayList;
    import java.util.List;
     
    import android.content.Context;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.GridView;
     
     
    public class AffichageListAdapter extends BaseAdapter {
     
     
            private Context mContext;
     
            private List<AffichageListText> mItems = new ArrayList<AffichageListText>();
     
            public AffichageListAdapter(Context context) {
                    mContext = context;
            }
     
            public void addItem(AffichageListText it) { mItems.add(it); }
     
            public void setListItems(List<AffichageListText> lit) { mItems = lit; }
     
            public int getCount() { return mItems.size(); }
     
            public Object getItem(int position) { return mItems.get(position); }
     
            public boolean areAllItemsSelectable() { return false; }
     
            public boolean isSelectable(int position) {
                    try{
                            return mItems.get(position).isSelectable();
                    }catch (IndexOutOfBoundsException aioobe){
                            return super.isEnabled(position);
                    }
            }
     
            public long getItemId(int position) {
                    return position;
            }
     
     
            public View getView(int position, View convertView, ViewGroup parent) {
                    AffichageListTextView btv;
                    if (convertView == null) {
                            btv = new AffichageListTextView(mContext,                      mItems.get(position));
                            btv.setLayoutParams(new GridView.LayoutParams(85, 85));                        
                            btv.setPadding(10, 10, 10, 10);
                    } else { 
     
                            btv = (AffichageListTextView) convertView;
                            btv.setText(mItems.get(position).getText());
                            btv.setIcon(mItems.get(position).getIcon());
                    }
                    return btv;
            }
    }
    mais je n'ai plus les noms des dossiers/fichiers et je n'ai toujours plus d'action au clique sur un dossier/fichier sauf pour le menu contextuel
    Images attachées Images attachées  

  2. #22
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Salut,

    Pour le listener sur le on Click d'un GridView c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Add a Listener of the gridview 
        	gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
     
                }
            });

    Pour la gestion de l'affichage il faut que tu repenses la mise en place , le mieux serait par exemple de mettre le nom au dessus/dessous de tes images.
    il faut modifier le layout pour cela.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #23
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 104
    Points : 66
    Points
    66
    Par défaut
    Ok merci j'avais trouvé pour le onclicklistener mais j'ai des erreurs sur ce 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
    44
    45
    gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    
            }
        });
    
        String selectedFileString = this.directoryEntries.get(position).getText();
        if (selectedFileString.equals(getString(R.string.current_dir))) {
                
                this.browseTo(this.currentDirectory);
                
        } else if (selectedFileString.equals(getString(R.string.retour))) {
                this.upOneLevel();
                
        } else {
                File clickedFile = null;
                switch (this.displayMode) {
                        case RELATIVE:
                                clickedFile = new File(this.currentDirectory
                                                .getAbsolutePath()
                                                + this.directoryEntries.get(position).getText());
                                break;
                                
                        case ABSOLUTE:
                                clickedFile = new File(this.directoryEntries.get(position).getText());
                                break;
                                
    }
                
                if (clickedFile != null)
                	
                	Log.d("", "File " + clickedFile + " exists? " +
                			 
                            clickedFile.exists());
                        this.browseTo(clickedFile);
                
        }}
    private boolean checkEndsWithInStringArray(String checkItsEnd,
                 String[] fileEndings){
    				for(String aEnd : fileEndings){
    					if(checkItsEnd.endsWith(aEnd))
    						return true;
    }
    return false;
    }
    Pour le layout je vais voir ça
    Merci encore !

  4. #24
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    T'es allé trop vite tu n'as pas insérer ton code au bon endroit

    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
    gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
     String selectedFileString = this.directoryEntries.get(position).getText();
        if (selectedFileString.equals(getString(R.string.current_dir))) {
     
                this.browseTo(this.currentDirectory);
     
        } else if (selectedFileString.equals(getString(R.string.retour))) {
                this.upOneLevel();
     
        } else {
                File clickedFile = null;
                switch (this.displayMode) {
                        case RELATIVE:
                                clickedFile = new File(this.currentDirectory
                                                .getAbsolutePath()
                                                + this.directoryEntries.get(position).getText());
                                break;
     
                        case ABSOLUTE:
                                clickedFile = new File(this.directoryEntries.get(position).getText());
                                break;
     
    }
     
                if (clickedFile != null)
     
                	Log.d("", "File " + clickedFile + " exists? " +
     
                            clickedFile.exists());
                        this.browseTo(clickedFile);
     
        }
     
            }
        });
     
       }
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  5. #25
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 104
    Points : 66
    Points
    66
    Par défaut
    arff!

    j'ai des erreurs de partout !

    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
        Collections.sort(this.directoryEntries);
        gridview = (GridView) findViewById(R.id.gridview);
        AffichageListAdapter itla = new AffichageListAdapter(this);
        itla.setListItems(this.directoryEntries);              
        gridview.setAdapter((ListAdapter)itla);
        
    
        
        gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
     String selectedFileString = this.directoryEntries.get(position).getText();
        if (selectedFileString.equals(getString(R.string.current_dir))) {
                
                this.browseTo(this.currentDirectory);
                
        } else if (selectedFileString.equals(getString(R.string.retour))) {
                this.upOneLevel();
                
        } else {
                File clickedFile = null;
                switch (this.displayMode) {
                        case RELATIVE:
                                clickedFile = new File(this.currentDirectory
                                                .getAbsolutePath()
                                                + this.directoryEntries.get(position).getText());
                                break;
                                
                        case ABSOLUTE:
                                clickedFile = new File(this.directoryEntries.get(position).getText());
                                break;
                                
    }
                
                if (clickedFile != null)
                	
                	Log.d("", "File " + clickedFile + " exists? " +
                			 
                            clickedFile.exists());
                        this.browseTo(clickedFile);
                
        }
     
            }
        });
     
       }
    Comme-ci il fallait que je les re déclare dans ma classe...
    Et pour ce qui est du Layout, il faut que j'y implémente un TextView dans la GridView?

  6. #26
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 104
    Points : 66
    Points
    66
    Par défaut
    Alors il y a du nouveau.
    J'ai réussi pour l'affichage du texte en dessous de l'icône.
    J'ai modifié ma classe "AffichageListView" sur la ligne this.setOrientation(HORIZONTAL) en (VERTICAL) et sur la ligne
    mIcon.setPadding (0, 2, 2, 0) (gauche, haut, droite, bas) mais le texte n'est visible que sur l'émulateur et non sur mon mobile....

    Reste encore le problème de l'action sur le clique que je n'arrive toujours pas à restorer.

  7. #27
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 104
    Points : 66
    Points
    66
    Par défaut
    Bon problème résolu.
    Le texte est maintenant visible sur mon mobile!

    Ce que je voudrais faire aussi c'est changé la couleur lors de la sélection d'un item sur ma GridView et la couleur du texte de celle-ci mais je ne sais pas comment m'y prendre..

    Par contre, j'ai toujours le soucis de l'action sur le clique..

  8. #28
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
         // la tu mets le code sur le traitement d'un click sur la gridview 
     
    }
    });
    Ce que je voudrais faire aussi c'est changé la couleur lors de la sélection d'un item sur ma GridView et la couleur du texte de celle-ci mais je ne sais pas comment m'y prendre..
    Pour changer la couleur de fond de la sélection de ta gridview , il faudrait regarder sur la View dans ton adapter et lui assigner une couleur via setBackGround() lorsque la view et celle sélectionné .

    Pour la couleur du texte tu n'as qu'a le modifier dans l'adapter quand celui ci correspondant a celui de sélectionner () la focntion est setTextColor d'un TextView.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  9. #29
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 104
    Points : 66
    Points
    66
    Par défaut
    [QUOTE=Feanorin;5614374]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
         // la tu mets le code sur le traitement d'un click sur la gridview 
     
    }
    });
    Merci encore de m'aider!
    Par contre, c'est justement ce que je disais plus haut (post 24), ils me met des erreur comme-ci il fallait que je re déclare certains éléments.

    Puis c'est la couleur de sélection d'un item que je voudrais bien changer.
    Sur la miniature jointe, l'élément sélectionné devient orange au clique, mais sur le mobile, c'est juste un carré orné de bleue.
    Images attachées Images attachées  

  10. #30
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    C'est que il ne faut pas que tu redéclares certains éléments mais juste cette ligne de code implique qu'elle doit être dans la fonction que je t'ai montré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     String selectedFileString = this.directoryEntries.get(position).getText();
    Cette ligne te permet de récupérer le nom sélectionné , d'où sa place dans la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void onItemClick(AdapterView<?> parent, View v, int position, long id)
    après tu mets le code que tu as besoin lors de la sélection de la gridview

    Cette fonction onItemClick te préviens lorsqu' une image est sélectionnée et te donne l'adapter de ta gridview , la vue selectionnée , la position dans l'adapter, et son id .

    Si c'est juste le fond que tu veux changer de couleur alors regardes sur le background de ta vue . tu peux le faire directement dans le onItemClick avec la variable v , mais il faudra aussi que tu regarde dans ton adapter en retrouvant ta vue sélectionné .
    C'est déjà expliqué un peu plus haut .
    Il y a un article sur le forum posté récemment sur les gridview , tu peux y jeter un coup d'œil.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  11. #31
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 104
    Points : 66
    Points
    66
    Par défaut
    Voilà le code avec modifications :

    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
    gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    
    
        String selectedFileString = this.directoryEntries.get(position).getText();
        if (selectedFileString.equals(getString(R.string.current_dir))) {
                
                this.browseTo(this.currentDirectory);
                
        } else if (selectedFileString.equals(getString(R.string.retour))) {
                this.upOneLevel();
                
        } else {
                File clickedFile = null;
                switch (this.displayMode) {
                        case RELATIVE:
                                clickedFile = new File(this.currentDirectory
                                                .getAbsolutePath()
                                                + this.directoryEntries.get(position).getText());
                                break;
                                
                        case ABSOLUTE:
                                clickedFile = new File(this.directoryEntries.get(position).getText());
                                break;
                                
    }
                
                if (clickedFile != null)
                	
                	Log.d("Hadès™ Files Explorer", "File " + clickedFile + " exists? " +
                			 
                            clickedFile.exists());
                        this.browseTo(clickedFile);
        }
        }});
    }

  12. #32
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    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
    gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
     
     
        String selectedFileString = directoryEntries.get(position).getText();
        if (selectedFileString.equals(getString(R.string.current_dir))) {
     
                browseTo(this.currentDirectory);
     
        } else if (selectedFileString.equals(getString(R.string.retour))) {
                upOneLevel();
     
        } else {
                File clickedFile = null;
                switch (displayMode) {
                        case RELATIVE:
                                clickedFile = new File(currentDirectory
                                                .getAbsolutePath()
                                                + this.directoryEntries.get(position).getText());
                                break;
     
                        case ABSOLUTE:
                                clickedFile = new File(this.directoryEntries.get(position).getText());
                                break;
     
    }
     
                if (clickedFile != null)
     
                	Log.d("Hadès™ Files Explorer", "File " + clickedFile + " exists? " +
     
                            clickedFile.exists());
                        browseTo(clickedFile);
        }
        }});
    }
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  13. #33
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 104
    Points : 66
    Points
    66
    Par défaut
    Merci t'es vraiment un chef ça marche nickel !

    J'aurai une ou deux dernière petite requêtes ...

    1°) Je voudrais que l'utilisateur puisse switcher entre les 2 types d'affichages (GridView et ListView) via une ListPreferences (ListPreferences déjà crée c'est juste pour l'action de celles-ci)... Est-ce possible? Si oui pourrais-tu m'éclairer à ce sujet stp ?

    2°) Je voudrais aussi que l'utilisateur puisse choisir un de mes 3 thèmes personnalisés via une autre ListPreferences..
    Sous la forme de :
    Thème 1
    Thème 2
    Thème 3

    Je sais je voudrais beaucoup de choses

    En tous les cas merci pour toute ton aide.

  14. #34
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Citation Envoyé par xXO--Hades--OXx Voir le message
    Merci t'es vraiment un chef ça marche nickel !

    J'aurai une ou deux dernière petite requêtes ...

    1°) Je voudrais que l'utilisateur puisse switcher entre les 2 types d'affichages (GridView et ListView) via une ListPreferences (ListPreferences déjà crée c'est juste pour l'action de celles-ci)... Est-ce possible? Si oui pourrais-tu m'éclairer à ce sujet stp ?

    2°) Je voudrais aussi que l'utilisateur puisse choisir un de mes 3 thèmes personnalisés via une autre ListPreferences..
    Sous la forme de :
    Thème 1
    Thème 2
    Thème 3

    Je sais je voudrais beaucoup de choses

    En tous les cas merci pour toute ton aide.

    1/ Oui il te suffit de créer les deux interfaces dans ton layout et de masquer l'une ou l'autre en fonction de la préférences choisi.
    En gros tu auras les codes de la gridview et de la listview dans le code mais un seul des deux sera activé .
    Pour l'affichage tu as l'option setVisible(View.GONE) sur tes objets pour afficher l'un ou l'autre.


    2/ Je ne m'y connais pas trop sur le sujet mais je pense qu'il y a moyen de modifier dans le code tes objets en fonction du thème choisi . Inspire toi de ce que t'as donné MrDuChnok dans un post sur les selector , il doit avoir surement un moyen pour les utiliser à partir du code.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  15. #35
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 104
    Points : 66
    Points
    66
    Par défaut
    Bon j'ai un bout de code qui apparemment récupère l'id de mes items dans les ListPreferences mais je n'arrive pas à y mettre mon action de changement de thèmes sur la sélection de l'item.....

    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
    import android.content.SharedPreferences;
    import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
    import android.os.Bundle;
    import android.preference.PreferenceActivity;
    import android.widget.Toast;
     
    public class MesPreferences extends PreferenceActivity implements OnSharedPreferenceChangeListener{
     
    	SharedPreferences pref;
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    	super.onCreate(savedInstanceState);
    	addPreferencesFromResource(R.xml.mespreferences);
     
     
    	pref = getPreferenceManager().getSharedPreferences();
    	pref.registerOnSharedPreferenceChangeListener(this);
     
    }
     
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) {
     
    	Toast.makeText(this, sharedPreferences.getString(key, ""), Toast.LENGTH_SHORT).show();
    }
    }

  16. #36
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Il le gère a partir de ton fichier xml .

    Sinon tu peux toujours récupérer l'objet associé à un id , puis le changer à partir du code .

    Mais vu ce que tu veux faire il me semble que seul le fichier xml suffira .

    Tu n'as besoin que d'une fonction pour récupérer la valeur choisi par l'utilisateur .
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  17. #37
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 104
    Points : 66
    Points
    66
    Par défaut
    Quel fichier xml ?
    Celui où les items de ma listPreferences sont déclarés (arrays.xml) ou mon xml des Preferences ?

    Et justement comment récupérer juste l'id de l'item sélectionné car là j'ai utilisé un Toast pour "apercevoir " l'utilisation de toutes mes listPreferences ?

  18. #38
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Ceux qu'il utilise pour l'affichage des préférences , soit les deux si tu en as eu besoin de deux .

    Et justement comment récupérer juste l'id de l'item sélectionné car là j'ai utilisé un Toast pour "apercevoir " l'utilisation de toutes mes listPreferences ?
    Pour récupérer les préférences (un exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static int getItemId(Context context) { 
    SharedPreferences settings = PreferenceManager
    				.getDefaultSharedPreferences(context);
    reeturn settings.getInt("item_id",DEFAULT_ITEM_ID);
    }
    En fonction de l'id tu dois pouvoir savoir a quel thème il correspond. En fonction de ce que tu as déclaré dans tes ressources .
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  19. #39
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 104
    Points : 66
    Points
    66
    Par défaut
    Bon par exemple si je veux juste adapter un background via les items du code ci-dessous :

    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
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
    <string-array name="listThemesEntries">
    
    <item>Défaut</item>                <--- le fond noir d'origine
    <item>Thème Bleu</item>          <--- un fond bleu
    <item>Thème Rouge</item>        <--- un fond rouge
    
    </string-array>
    
    <string-array name="listThemesValue">
    
    <item>Thème par Défaut</item>    <---ce qu'il s'affiche dans le Toast
    <item>Thème Bleu</item>
    <item>Thème Rouge</item>           
    
    </string-array>
    Où les inclure ces fameux background? Dans ce code là ?

    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
    <?xml version="1.0" encoding="utf-8"?>
    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
     
     
    <PreferenceCategory android:title="Paramètres d'affichage"></PreferenceCategory>
     
     
     <ListPreference
      android:title="Thèmes"
      android:summary="Sélectionnez un Thème"
      android:key="listThème"
      android:entries="@array/listThemesEntries"
      android:entryValues="@array/listThemesValue"
      android:defaultValue="Thème par Défaut"
      android:negativeButtonText="Annuler"/>
    Je t'avoue que je suis complètement perdu là...

  20. #40
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Tu n'as pas à les inclures dans ce code là,

    il te suffit de le traiter dans l'activity.

    En fonction de l'id tu dois pouvoir savoir a quel thème il correspond. En fonction de ce que tu as déclaré dans tes ressources .
    Il te faut juste dans l'/les activity ou tu veux appliquer le thèmes, regarder dans les préférences ce que l'utilisateur a demandé et appliqué ça demande

    En créant la méthode ci dessous , tu pourra savoir à partir de l'activity quel thème tu dois appliquer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static String getTheme(Context context) { 
    SharedPreferences settings = PreferenceManager
    				.getDefaultSharedPreferences(context);
    return settings.getString("listThème",DEFAULT_THEME);
    }
    Les préférences servent juste à stocker dans SharedPreferences les valeurs saisie par l'utilisateur.
    Tu peux demander ces préférences à n'importe quel moment dans ton appli.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

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

Discussions similaires

  1. [Python 2.X] Comment créer un classement à partir d'une liste
    Par samcro7 dans le forum Général Python
    Réponses: 6
    Dernier message: 12/04/2015, 03h18
  2. [XL-2010] Comment créer un formulaire à partir d'une feuille Excel
    Par Denis_67 dans le forum Excel
    Réponses: 2
    Dernier message: 10/06/2014, 11h09
  3. [Artichow] Comment créer un graphe à partir d'une table mysql avec deux colonnes
    Par Amel_B dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 24/12/2013, 15h50
  4. Réponses: 1
    Dernier message: 14/07/2008, 11h17
  5. comment créer un rpm à partir d'une lib source
    Par kris1 dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 06/12/2007, 17h35

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