|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||||||||
|
Nouveau Membre du Club
![]() Inscription : juillet 2012 Messages : 137 ![]() |
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 :
Code :
Code :
Code :
Voilà en espérant que vous pourrez m'aider ^^ |
||||||||
|
|
00
|
|
|
#2 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2012 Messages : 137 ![]() |
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?) |
|
|
00
|
|
|
#3 |
![]() ![]() Inscription : août 2004 Messages : 8 661 ![]() |
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
__________________
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something. |
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2012 Messages : 137 ![]() |
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) |
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : août 2004 Messages : 8 661 ![]() |
Tu n'as pas lu la dernière ligne de mon post précédent.
__________________
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something. |
|
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2012 Messages : 137 ![]() |
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 |
|
|
00
|
|
|
#7 |
![]() ![]() Inscription : août 2004 Messages : 8 661 ![]() |
Bah ton activity.
listViewMap étant membre de ton activity(appelont là MyActivity car tu ne donne pas le nom de celle ci dans tes exempels de code). Pour accéder à listViewMap dans une classe anonyme il faut procéder de la façon suivante:
__________________
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something. |
|
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2012 Messages : 137 ![]() |
C'est ce que j'avais fait, et ça foire.
Il m'est proposé "create a field 'listViewMap' in type 'Firts' ou create constant 'listViewMap' in type 'First' Et bon les 2 possibilités retombent sur l'erreur que j'avais dit qu'il fallait mettre i en final ce qui n'est pas bon non plus :s |
|
|
00
|
|
|
#9 |
![]() ![]() Inscription : août 2004 Messages : 8 661 ![]() |
Je n'avais pas vu, ta listViewMap est déclarée dans le scope d'une méthode. Donc, a moins d'être finale, elle n'a pas d'existence en dehors du scope de celle ci et sera détruite à la fin de l'exécution de celle ci.
Or, la méthode onClick de ta classe anonyme ne sera pas exécutée pendant le déroulement de la méthode, mais bien plus tard, au moment de l'appui sur le bouton. Et à ce moment là, listViewMap n'existera plus. Si tu en as besoin à un moment autre que pendant l'exécution de la méthode créant le listener, il faudra faire de listViewMap un membre de ta classe.
__________________
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something. |
|
|
00
|
|
|
#10 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2012 Messages : 137 ![]() |
J'ai déjà une erreur dans le code que je n'ai pas corrigé ici.
listViewMap n'est pas final. Par contre elle est déclarée dans ma boucle mais avant la méthode qui gère le listener |
|
|
00
|
|
|
#11 | ||
![]() ![]() Inscription : août 2004 Messages : 8 661 ![]() |
Pour faire simple, définit ta propre classe héritant de View.OnClickListener, prenant en paramètre du constructeur une référence sur une ListView et utilisant cette ListView dans sa méthode onItemClick.
Par exemple: Code :
Code :
buttonMap[i].setOnClickListener(new MyListener(listViewMap[i]));
__________________
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something. |
||
|
|
00
|
|
|
#12 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2012 Messages : 137 ![]() |
Ok je vais voir ce que ça donne en espérant que ça me débloque ^^
|
|
|
00
|
|
|
#13 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2012 Messages : 137 ![]() |
Bon bah en fait c'est pas possible :s
Mon activity est un fragment, et donc hérite de fragments. Et je ne peux pas utiliser d'interface dans ce cas là -_- |
|
|
00
|
|
|
#14 |
![]() ![]() Inscription : août 2004 Messages : 8 661 ![]() |
Je ne vois pas la relation par rapport à ma proposition...
__________________
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something. |
|
|
00
|
|
|
#15 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2012 Messages : 137 ![]() |
autant pour moi, j'avais en tête de faire un héritage mais en fait ce n'est pas nécessaire
|
|
|
00
|
|
|
#16 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2012 Messages : 137 ![]() |
Bon bah je ne sais pour quelle raison obscure il n'accepte pas le extends OnClickListener.
Et sur le net je ne vois que des implement :s |
|
|
00
|
|
|
#17 | ||
|
Nouveau Membre du Club
![]() Inscription : juillet 2012 Messages : 137 ![]() |
Bon voilà j'ai fait en implémentant OnClickListener mais la machine n'aime pas trop ça -_-
En gros l'app se lance correctement mais quand le clique rien ne va plus: Code :
|
||
|
|
00
|
|
|
#18 |
|
Membre Expert
![]() Développeur mobile Inscription : février 2010 Messages : 791 ![]() |
Code :
rapport.presse.cim.MyListViewListener.onClick(MyListViewListener.java:15)
__________________
Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème. |
|
|
00
|
|
|
#19 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2012 Messages : 137 ![]() |
En fait l'erreur a changé mais c'est sans doute pasque il y a encore des bouts de code qui ne sont pas codé en fonction de mes tableaux.
Par contre y-a-t-il un moyen de faire un tableau d'ArrayList et ArrayAdapter? (normalement non mais il doit sûrement y avoir une astuce). |
|
|
00
|
|
|
#20 |
|
Membre Expert
![]() Développeur mobile Inscription : février 2010 Messages : 791 ![]() |
Ce sont des choses différentes. Un ArrayList est un simple conteneur. Un ArrayAdapter est un contrôleur pour des données.
Si tu désirs une liste contenant les deux, tu dois avoir un grave problème de conception (ou un besoin qui m'échappe totalement).
__________________
Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com