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 :

Problème enum et tableau (accès aux variables)


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Par défaut Problème enum et tableau (accès aux variables)
    Bonjour, précédemment on m'a conseillé d'utiliser les énumérations pour mes déclaration de variables.
    Le seul soucis est que comme à chaque solution cela pose un problème un peu plus loin.

    J'ai mes 2 énumérations:

    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
    enum ButtonId{
    		mButtonAll(R.id.all),
    		mButtonQuot(R.id.quot),
    		mButtonHebd(R.id.hebd),
    		mButtonMens(R.id.mens),
    		mButtontrim(R.id.trim),
    		mButtonAnn(R.id.ann);
     
    		private int resId;
    		private ButtonId(int r){
    			this.resId = r;
    		}
    		public int getResId(){
    			return this.resId;
    		}	
    	}
     
    	enum ListViewId{
    		mListViewAll(R.id.ListViewAll),
    		mListViewQuot(R.id.ListViewQuot),
    		mListViewHebd(R.id.ListViewHebd),
    		mListViewMens(R.id.ListViewMens),
    		mListViewTrim(R.id.ListViewTrim),
    		mListViewAnn(R.id.ListViewAnn);
     
    		private int resId;
    		private ListViewId(int r){
    			this.resId = r;
    		}
    		public int getResId(){
    			return this.resId;
    		}
    	}
    Et ensuite j'ai leur utilisation:
    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
    ListViewId[] listViewId = ListViewId.values();
    		final ListView[] listViewMap = new ListView[listViewId.length];
    		for (int i = 0; (i < listViewId.length); ++i){
    		    listViewMap[i] = (ListView) v.findViewById(listViewId[i].getResId());
    		    listViewMap[i].setOnItemClickListener(new OnItemClickListener(){
     
    				public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    					// TODO Auto-generated method stub
    					String choix = mDataAll.get(position);
    					Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
    					mObjetBundle.putString("choix", choix);
    					Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
    					t.putExtras(mObjetBundle);
    					startActivity(t);	
    			}});
    		}
     
    ButtonId[] buttonId = ButtonId.values();
    		Button[] buttonMap = new Button[buttonId.length];
    		for (int i = 0; (i < buttonId.length); ++i){
    		    buttonMap[i] = (Button) v.findViewById(buttonId[i].getResId());
    			buttonMap[i].setOnClickListener(new View.OnClickListener() {
     
    				public void onClick(View v) {
    					// TODO Auto-generated method stub
    					if(listViewMap[i].isShown()){
    						listViewMap[i].setVisibility(View.GONE);
    					}
    					else{
    						listViewMap[i].setVisibility(View.VISIBLE);
    					}
    				}
    			});
    		}
    Le problème c'est déjà pour la partie pour rendre la liste visible ou non il aime pas trop la syntaxe avec le tableau listViewMap[i]:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void onClick(View v) {
    					// TODO Auto-generated method stub
    					if(listViewMap[i].isShown()){
    						listViewMap[i].setVisibility(View.GONE);
    					}
    					else{
    						listViewMap[i].setVisibility(View.VISIBLE);
    					}
    				}
    Et par la suite j'ai mes variable mDataAll qui sont des arrayList donc je ne vois pas comment rendre l'initialisation dynamique pour ensuite l'utiliser sans cette partie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    					// TODO Auto-generated method stub
    					String choix = mDataAll.get(position);
    					Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
    					mObjetBundle.putString("choix", choix);
    					Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
    					t.putExtras(mObjetBundle);
    					startActivity(t);	
    				}});

    Voilà en espérant que vous pourrez m'aider ^^

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Par défaut
    Personne ne sait répondre? :s
    J'ai aussi un souci avec les visibilités de mes éléments, impossible de faire tabVar[i].isShown() car la variable n'est pas finale.
    Donc en gros tout ce que j'ai fait avant ça ne sert à rien :s (limite de java/android ou possibilité de solution?)

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    C'est juste que tu n'as pas correctement intégré les notions de scope de java.


    Les endroits où ton problème survient sont dans la déclaration de ton Listener, qui lui te met dans le scope d'une classe anonyme et non plus celui de la classe englobante. De fait, par la définition même du langage

    un va chercher la variable listViewMap dans l'ordre suivant:

    1 Dans les variables déclarées dans la méthode courante
    2 Dans les attributs de la classe courante (équivalent à un this.
    listViewMap)

    Or listViewMap n'existe ni dans l'une, ni dans l'autre.
    Il faut donner à java le chemin pour y accéder en fait en faisant un
    MaClasseEnglobante.this.listViewMap

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Par défaut
    Ha ok mais alors vu que c'est une classe anonyme je fais comment? la seule classe englobante connue c'est ma classe qui me sert d'activité.
    Par contre juste un doute, il me dit plutôt que la variable doit être finale quand je la lie à isShown().
    C'est pas plutôt ça le problème?

    En tout cas merci pour ta réponse, mais j'ai l'impression que le combat contre la redondance sous android n'est pas des plus simple (et même parfois pas possible)

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tu n'as pas lu la dernière ligne de mon post précédent.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Par défaut
    Ouais mais c'est là que j'ai ptet mal compris, dans ce cas c'est quoi la classe englobante?
    La seule que je suis sûr c'est la class de mon fragment mais apparemment je me trompe

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 09/08/2006, 13h03
  2. Acces aux variables d'une DLL
    Par abignon dans le forum MFC
    Réponses: 1
    Dernier message: 08/09/2005, 14h29
  3. [C#] Accès aux variables Session
    Par kalan dans le forum ASP.NET
    Réponses: 9
    Dernier message: 31/08/2005, 16h40
  4. [FLASH MX2004] [AS2] Accès aux variables d'une classe
    Par stailer dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 17/07/2005, 12h58
  5. [Language]Accès aux variables
    Par Adaemon dans le forum Langage
    Réponses: 12
    Dernier message: 27/04/2005, 14h17

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