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 avec une checkbox


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Points : 84
    Points
    84
    Par défaut Problème avec une checkbox
    Bonjour,

    Mon problème est le suivant, j'effectue une application mobile j'ai un plan ou je peux insérer dessus des lignes, je peux par la suite sélectionner cette ligne. Lorsque je sélectionne celle-ci j'ai la possibilité de paramétrer cette ligne, j'ai alors une pop-up qui s'ouvre. J'ai plusieurs champs que je peux renseigner et j'ai une checkbox, qui me permet de faire une action si je la sélectionne. Mon problème est que lorsque j'ajoute plusieurs ligne et que je sélectionne cette checkbox sur une des lignes, elle est sélectionnée pour toutes les lignes alors que j'aimerai seulement pour la ligne selectionnée

  2. #2
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Bonjour,

    Peux-tu nous expliquer comment tu gère tes checkbox?
    Le mieux serais d'avoir un tableau de valeur (des boolean par exemple) avec une valeur par ligne de ton tableau.

    gl hf

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Points : 84
    Points
    84
    Par défaut
    Voici le code de ma pop-up :

    pop-up.txt

  4. #4
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Re,

    Je vois que tu interagie avec "selectedDoor" si openDoor est checked mais je ne vois nul part d'instanciation de cette variable et je ne voit pas ce que fait la fonction selectedDoor.setAttenuation(0);
    A ce que je vois dans ce fichier, il n'y a rien de problématique...

    J'aurais besoin d'un peu plus d'info et évite de mettre un fichier txt, j'ai pas d’indentation, n'y de couleur avec ca... Met plutôt du code entre balise sur le site pls.

    gl hf

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Points : 84
    Points
    84
    Par défaut
    L'initialisation se fait de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    protected void onPrepareDialog(int id, Dialog dialog) {
     
    		/** Initialisation des pop-up de modification **/
    		final AlertDialog alertDialog = (AlertDialog) dialog;
    		final Porte selectedDoor = plan.getSelectedPorte();
    ensuite concernant l'atténuation c parce que ma porte a une matière attribuer par défaut : le Bois et une atténuation : 0,36. Du coup ma checkbox permet en cliquant sur celle ci d'indiquer que la porte est ouverte donc l'atténuation de la porte devient zéro. Ma classe porte hérite de ma classe eltBatiment ou dedans j'ai cette fonction :

    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
     
    /*******************************************************************
             * Detecter les intersections avec l'Equation de droite du vecteur *
             * Source->Point P(x,y) *
             *******************************************************************/
    	public boolean detectIntersections(Source s, int x, int y) {
    		double bx, ex, by, ey;
    		if (getPixelsLength() > getPixelsThickness()) {
    			bx = getPosition().x + getPixelsThickness() / 2;
    			ex = bx;
    			by = getPosition().y;
    			ey = getPosition().y + getPixelsLength();
    		} else {
    			bx = getPosition().x;
    			ex = getPosition().x + getPixelsThickness();
    			by = getPosition().y + getPixelsLength() / 2;
    			ey = by;
    		}
    		double D = (ey - by) * (x - s.getPosition().x) - (ex - bx)
    				* (y - s.getPosition().y);
     
    		/** Si d == 0 alors segment parrall�le, on ne fait rien. **/
    		if (D != 0) {
    			double Na = (ex - bx) * (s.getPosition().y - by) - (ey - by)
    					* (s.getPosition().x - bx);
    			double Nb = (x - s.getPosition().x) * (s.getPosition().y - by)
    					- (y - s.getPosition().y) * (s.getPosition().x - bx);
     
    			double alpha = Na / D;
    			double beta = Nb / D;
     
    			if ((alpha >= 0 && alpha <= 1) && (beta >= 0 && beta <= 1)) {
     
    				if (this instanceof Mur) {
    					for (Fenetre fenetre : ((Mur) this).getFenetres()) {
    						if (fenetre.detectIntersections(s, x, y)) {
    							attenuation = fenetre.getAttenuation();
    							return true;
    						}
    					}
    					for (Porte porte : ((Mur) this).getPortes()) {
    						if (porte.detectIntersections(s, x, y)) {
    							attenuation = porte.getAttenuation();
    							return true;
    						}
    					}
    				}
     
                                    if ( this instanceof Porte) {
                                           return true;
                                    }
     
    				attenuation = Matiere.renvoyerAttenuation(getTypeMatiere());
    				return true;
    			} else
    				return false;
    		}
     
    		return false;
     
    	}

  6. #6
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Re,

    Pour etre sur d'avoir bien compris (reprend moi si j'ai mal compris hein).
    Tu as un tableau de porte, lorsque tu ajouter une porte, tu affiche une checkbox qui permet de setter une valeur pour cette nouvelle porte.
    Le probleme vient que lorsque tu ajoute cette porte, toutes les autres porte (ou toute celle que tu vient de créer?) ont leur valeurs modifier?
    est ce que tu rencontre ce probleme pour toute les valeurs de tes portes ou juste pour celle ci en particulier?

    Montre moi comment tu stock tes portes et comment tu stock les valeurs de tes portes stp.

    gl hf

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Points : 84
    Points
    84
    Par défaut
    Lorsque j'ajoute une porte j'ai la possibilité de modifier ces paramètres, oui la checkbox permet de setter une valeur mais elle le fait pour toute les portes. Il y a que cette checkbox qui est soit cochée pour toute les portes du plan les autres valeur comme le nom, la matière, l'atténuation ne sont pas identique


    Je stock mes portes dans ma classe Mur qui herite elle aussi de EltBatiment, je les stock là parce que ma porte est contenu dans un mur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private ArrayList<Porte> portes = new ArrayList<Porte>();
    et dans cette classe mur je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void add(Porte porte) {
    		porte.setName(porte.getName() + "." + eltPresent(porte.getName()));
    		portes.add(porte);
    	}

  8. #8
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Re,

    Ca sent l'erreur toute conne la...
    Je vois pas de probleme au niveau du stockage, ne ferais-tu pas une erreur lorsque tu affiche tes portes?
    Une erreur sur une variable ou autre?

    gl hf

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Points : 84
    Points
    84
    Par défaut
    Oui surement une erreur bête mais je ne vois pas ou ^^

  10. #10
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Envoie ta fonction d'affichage, ca peut venir de la aussi, lorsque tu boucle sur tes portes pour les afficher.

  11. #11
    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
    Deux choses l'une :
    - tu ajoutes la même checkbox à chaque ligne, donc elles ont exactement le même comportement
    - tu oublies de réinitialiser la valeur dans le Holder couplé à ton Adapter pour afficher X lignes

    Le code relatif à l'ajout de la coche, ainsi que sa gestion et l'affichage en général de cette popup nous aidera à te guider.
    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

  12. #12
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Points : 84
    Points
    84
    Par défaut
    Comment je peux "réinitialiser la valeur dans le Holder couplé à ton Adapter pour afficher X lignes" ?

  13. #13
    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
    Vu que tu ne fournis pas le code, je vais partir purement sur du spéculatif et sans doute mettre à côté de la plaque (mais peut-être qu'avec un peu de chance...).

    Tu as donc dû créer un Adapter pour la ListView que tu gères. Dans cet Adapter, tu gères l'affichage des cellules. Tu as aussi un modèle de données qui te sert à gérer l'affichage de ces cellules. Il faut rajouter au modèle une information "cochée", que la coche modifie cette information, et que lorsque la cellule affiche, elle coche ou non la Checkbox en fonction de cette information.

    Mais bon... avoir ton code permettrait de ne pas avoir besoin de boule de cristal, et on est un poil en rupture de stock pour le moment, donc s'il te plaît...
    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

  14. #14
    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
    Citation Envoyé par lass7
    Est ce que j'aurai pu vous envoyer par mail mon projet pour que vous puissez y voir plus clair ?
    Non
    Je ne fournis pas de support en privé et puisque nous sommes sur un forum d'entraide, autant en faire profiter tout le monde

    Analyse les portions de code correspondant à ce que l'on te demande, et fournis-les nous dans des balises codes (bouton #). Nous pourrons ainsi te guider, ou te demander d'autres portions de code.
    Si tu ne comprends pas certaines réponses ou échanges, tu peux poser des questions, il n'y a pas de mal à ça, et c'est le but d'un forum d'entraide.
    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

  15. #15
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Points : 84
    Points
    84
    Par défaut
    J'ai du mal a comprendre ce que vous voulez, j'ai un adapter que je déclare comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public ArrayAdapter<String> adapter;
     
     
    protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.indoor);
     
    		plan = (Plan) findViewById(R.id.plan);
    		plan.setActivity(this);
    ....
                     adapter = new ArrayAdapter<String>(IndoorActivity.this,
    				android.R.layout.simple_dropdown_item_1line, data);
    }
    Mais il me sert juste pour mon menu déroulant dans ma pop-up. Ensuite pour afficher ma fenetre je l'affiche grace a ma méthode doBitmap qui se situe dans ma classe Porte :
    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
     
    public void doBitmap() {
    		if (isSelected()) {
    			setBitmap(Bitmap.createBitmap(getPixelsThickness() + 10,
    					getPixelsLength() + 10, Config.ARGB_8888));
    			for (b = 5; b < getBitmap().getHeight() - 5; b++) {
    				for (a = 5; a < getBitmap().getWidth() - 5; a++)
    					getBitmap().setPixel(a, b, Color.rgb(222, 184, 135));
    			}
    			for (a = 0; a < getBitmap().getWidth(); a++)
    				getBitmap().setPixel(a, 0, Color.RED);
    			for (a = 0; a < getBitmap().getWidth(); a++)
    				getBitmap().setPixel(a, getBitmap().getHeight() - 1, Color.RED);
    			for (b = 0; b < getBitmap().getHeight(); b++)
    				getBitmap().setPixel(0, b, Color.RED);
    			for (b = 0; b < getBitmap().getHeight(); b++)
    				getBitmap().setPixel(getBitmap().getWidth() - 1, b, Color.RED);
    		} else {
    			setBitmap(Bitmap.createBitmap(getPixelsThickness(),
    					getPixelsLength(), Config.ARGB_8888));
    			for (b = 0; b < getBitmap().getHeight(); b++) {
    				for (a = 0; a < getBitmap().getWidth(); a++)
    					getBitmap().setPixel(a, b, Color.rgb(222, 184, 135));
    			}
    		}
    	}

  16. #16
    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
    Tu dis avoir un problème avec des checkbox.
    Lorsque tu en sélectionne une, ça sélectionne aussi les autres.

    Partant de là, le code intéressant serait celui ajoutant la checkbox, ainsi que celui la gérant. Il nous faut voir comment tu construits et gère ces checkbox. Le reste n'est que fioriture.

    Dans le code fournis jusqu'à présent, il n'est fait mention des checkbox qu'a une reprise, dans "pop-up.txt" dont voici le code :
    Code Java : 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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    /**
                     * Cas d'une Porte
                     */
    		case DIALOG_EDIT_DOOR:
    			/**
                             * Initialisation des element du fichier
                             * res/layout/dialog_edit_door.xml
                             **/
     
    			/**
                             * Nom
                             */
    			final EditText porte_name = (EditText) alertDialog
    					.findViewById(R.id.edit_doorname);
     
    			/**
                             * Declaration du menu deroulant
                             */
    			final Spinner porte_material = (Spinner) alertDialog
    					.findViewById(R.id.spinner_doormaterial);
     
    			/**
                             * Declaration epaisseur et largeur
                             */
    			final EditText porte_Thickness = (EditText) alertDialog
    					.findViewById(R.id.edit_doorThickness);
    			final EditText porte_WidthD = (EditText) alertDialog
    					.findViewById(R.id.edit_doorWidth);
     
    			/**
                             * Declaration nouvelle matiere et attenuation
                             */
    			final EditText porte_new_material = (EditText) alertDialog
    					.findViewById(R.id.edit_doornewmaterial);
    			final EditText porte_attenuation = (EditText) alertDialog
    					.findViewById(R.id.edit_doorattenuation);
     
    			/**
                             * Format
                             */
    			/** 2 chiffres apres la virgule max **/
    			dfp.setMaximumFractionDigits(2);
    			/** 2 chiffres apres la virgule min **/
    			dfp.setMinimumFractionDigits(2);
    			dfp.setDecimalSeparatorAlwaysShown(true);
     
    			final String strThicknessD = df.format(selectedDoor
    					.getPixelsThickness() / Plan.getScale());
    			final String strWidthD = df.format(selectedDoor.getPixelsLength()
    					/ Plan.getScale());
     
    			/**
                             * Declaration d'une checkbox
                             */
    			final CheckBox openDoor = (CheckBox) alertDialog
    					.findViewById(R.id.doorOpen);
     
    			/**
                             * Declaration des coef pour la visualisation sur le plan
                             */
    			final double coef1 = 2.8;
    			final double coef2 = 2;
     
    			double nbThicknessD;
    			double nbWidthD;
     
    			nbThicknessD = Double.parseDouble(strThicknessD.replace(',', '.'));
    			nbWidthD = Double.parseDouble(strWidthD.replace(',', '.'));
     
    			porte_material.setAdapter(adapter);
    			porte_material.setSelection(adapter.getPosition(selectedDoor
    					.getTypeMatiere()));
     
    			/**
                             * Menu deroulant
                             */
    			porte_material
    					.setOnItemSelectedListener(new OnItemSelectedListener() {
     
    						@Override
    						public void onItemSelected(AdapterView<?> parent,
    								View view, int position, long id) {
    							/**
                                                             * Recuperation de la matiere selectionnee
                                                             */
    							String matiere = data.get(position);
     
    							/**
                                                             * Recuperation de l'attenuation de celle-ci
                                                             */
    							Double attenuation = Matiere
    									.renvoyerAttenuation(matiere);
     
    							porte_attenuation.setText((attenuation).toString());
    						}
     
    						@Override
    						public void onNothingSelected(AdapterView<?> parent) {
    						}
    					});
     
    			/**
                             * Information d'aide pour la largeur
                             */
    			Button btnAide1 = (Button) alertDialog
    					.findViewById(R.id.btnAidePorte1);
    			btnAide1.setOnClickListener(new View.OnClickListener() {
     
    				@Override
    				public void onClick(View v) {
    					Toast.makeText(IndoorActivity.this,
    							"Largeur standard d'une Porte", Toast.LENGTH_SHORT)
    							.show();
    				}
    			});
     
    			/**
                             * Information d'aide pour l'epaisseur
                             */
    			Button btnAide2 = (Button) alertDialog
    					.findViewById(R.id.btnAidePorte2);
    			btnAide2.setOnClickListener(new View.OnClickListener() {
     
    				@Override
    				public void onClick(View v) {
    					Toast.makeText(IndoorActivity.this,
    							"Epaisseur standard d'une Porte",
    							Toast.LENGTH_SHORT).show();
    				}
    			});
     
    			porte_name.setText(selectedDoor.getName());
    			porte_name.setVisibility(RelativeLayout.VISIBLE);
     
    			String thick,
    			width;
     
    			if (selectedDoor.eltIsVertical()) {
    				thick = dfp.format(nbThicknessD / coef1);
    				width = dfp.format(nbWidthD / coef2);
    			} else {
    				thick = dfp.format(nbThicknessD / coef2);
    				width = dfp.format(nbWidthD / coef1);
    			}
     
    			final double nbthick,
    			nbwidth;
     
    			nbthick = Double.parseDouble(thick.replace(',', '.'));
    			nbwidth = Double.parseDouble(width.replace(',', '.'));
     
    			if (selectedDoor.eltIsVertical()) {
    				porte_Thickness.setText(String.valueOf(nbthick));
    				porte_Thickness.setVisibility(RelativeLayout.VISIBLE);
     
    				porte_WidthD.setText(String.valueOf(nbwidth));
    				porte_WidthD.setVisibility(RelativeLayout.VISIBLE);
    			} else {
    				porte_Thickness.setText(String.valueOf(nbwidth));
    				porte_Thickness.setVisibility(RelativeLayout.VISIBLE);
     
    				porte_WidthD.setText(String.valueOf(nbthick));
    				porte_WidthD.setVisibility(RelativeLayout.VISIBLE);
    			}
     
    			/**
                             * Gestion des boutons
                             */
    			Button addP = (Button) alertDialog.findViewById(R.id.add_material);
     
    			Button validbuttonDoor = (Button) alertDialog
    					.findViewById(R.id.valide_door);
    			Button cancelbuttonDoor = (Button) alertDialog
    					.findViewById(R.id.cancel_door);
     
    			/**
                             * Gestion de l'ajout de la nouvelle matiere
                             */
    			addP.setOnClickListener(new View.OnClickListener() {
     
    				@Override
    				public void onClick(View v) {
     
    					try {
     
    						/**
                                                     * Verification que les champs sont bien remplis
                                                     */
    						if (porte_new_material.getText().toString().equals("")) {
    							Toast.makeText(
    									getApplicationContext(),
    									"Veuillez remplir le champ nouvelle matiere, avant de continuer !",
    									Toast.LENGTH_SHORT).show();
    							porte_new_material.requestFocus();
    							return;
    						}
    						if (!verifierDouble(porte_attenuation.getText()
    								.toString())) {
    							Toast.makeText(
    									getApplicationContext(),
    									"Veuillez saisir un nombre dans le champ attenuation !",
    									Toast.LENGTH_SHORT).show();
    							porte_attenuation.requestFocus();
    							return;
    						}
     
    						String new_matiere = porte_new_material.getText()
    								.toString();
    						Double attenuation = Double
    								.parseDouble(porte_attenuation.getText()
    										.toString());
     
    						/**
                                                     * Ajout dans le HashMap en appelant Matiere
                                                     */
    						Matiere.ajout(new_matiere, attenuation);
     
    						/**
                                                     * Rafraichissement du Spinner a partir de data
                                                     */
    						data.add(new_matiere);
    						adapter.notifyDataSetChanged();
     
    					} catch (Exception e) {
    						Toast.makeText(
    								IndoorActivity.this,
    								"Veuillez remplir les champs correspondants !!!",
    								Toast.LENGTH_SHORT).show();
    					}
     
    					porte_new_material.setText("");
    					porte_attenuation.setText("");
    				}
    			});
     
    			/**
                             * Gestion du bouton Valider
                             */
    			validbuttonDoor.setOnClickListener(new OnClickListener() {
     
    				public void onClick(View v) {
     
    					if (!plan
    							.getCurrentFloor()
    							.getBatimentPart()
    							.containsPorteWithName(
    									porte_name.getText().toString(),
    									selectedDoor)) {
     
    						double v1, v2;
     
    						selectedDoor.setName(porte_name.getText().toString());
    						selectedDoor.setTypeMatiere(porte_material
    								.getSelectedItem().toString());
    						selectedDoor.setMeterThickness(Float
    								.valueOf(porte_Thickness.getText().toString()));
    						selectedDoor.setMeterLength(Float.valueOf(porte_WidthD
    								.getText().toString()));
     
    						/**
                                                     * Condition Porte ouverte/fermee
                                                     */
    						if (openDoor.isChecked()) {
    							/** Si on coche, alors l'attenuation est a zero **/
     
    							selectedDoor.setAttenuation(0);
     
    						} else {
    							selectedDoor.setAttenuation(Matiere
    									.renvoyerAttenuation(selectedDoor
    											.getTypeMatiere()));
     
    						}
     
    						/**
                                                     * Valeur v1 et v2 suivant la position
                                                     */
    						if (selectedDoor.eltIsVertical()) {
    							/** Epaisseur de la porte **/
    							v1 = selectedDoor.getMeterThickness()
    									* Plan.getScale();
    							/** Largeur de la porte **/
    							v2 = selectedDoor.getMeterLength()
    									* Plan.getScale();
    						} else {
    							/** Largeur de la porte **/
    							v1 = selectedDoor.getMeterLength()
    									* Plan.getScale();
    							/** Epaisseur de la porte **/
    							v2 = selectedDoor.getMeterThickness()
    									* Plan.getScale();
    						}
     
    						v1 = Math.abs(selectedDoor.getMeterThickness()
    								* Plan.getScale());
    						v2 = (Math.abs(selectedDoor.getMeterLength()
    								* Plan.getScale()));
     
    						if (selectedDoor.eltIsVertical()) {
    							selectedDoor.setPixelsThickness(v1 * coef1);
    							selectedDoor.setPixelsLength(v2 * coef2);
    							selectedDoor.setMeterThickness((v1 * coef1)
    									/ Plan.getScale());
    							selectedDoor.setMeterLength((v2 * coef2)
    									/ Plan.getScale());
    						} else {
    							selectedDoor.setPixelsThickness(v2 * coef2);
    							selectedDoor.setPixelsLength(v1 * coef1);
    							selectedDoor.setMeterThickness((v1 * coef1)
    									/ Plan.getScale());
    							selectedDoor.setMeterLength((v2 * coef2)
    									/ Plan.getScale());
    						}
     
    					} else {
    						Toast.makeText(IndoorActivity.this,
    								"Une Porte porte deja ce nom.",
    								Toast.LENGTH_SHORT).show();
    					}
    					selectedDoor.setSelected(false);
    					plan.setSelectedPorte(null);
    					/** Annule la possibilité de déplacement **/
    					plan.getSelectionSourceMurEtElementListener()
    							.setPorteSelected(null);
    					changeToMenu(MENU_EDITION);
    					alertDialog.dismiss();
    				}
    			});
     
    			/**
                             * Gestion du bouton Annuler
                             */
    			cancelbuttonDoor.setOnClickListener(new OnClickListener() {
     
    				public void onClick(View v) {
    					selectedDoor.setSelected(false);
    					plan.setSelectedPorte(null);
    					/** Annule la possibilité de déplacement **/
    					plan.getSelectionSourceMurEtElementListener()
    							.setPorteSelected(null);
    					changeToMenu(MENU_EDITION);
    					alertDialog.dismiss();
    				}
    			});
    			break;
    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

  17. #17
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Points : 84
    Points
    84
    Par défaut
    Oui voila exactement il n'y a que dans ce bout de code que je l'utilise. Je l'utilise dans le cas ou j'ai un mur sur mon plan et sur ce mur je met une porte. A la suite de cela je selectionne la porte j'ai un menu qui s'affiche, je clique sur le bouton paramètre et la j'ai une pop up qui s'ouvre. Je peux faire plusieurs choses dedans comme changer le nom de ma porte, ... et aussi cocher une checkbox, si je la coche l’atténuation de ma porte est à zéro. Je fais çà c'est dans le cas ou ma porte est ouverte. Mais mon soucis c'est que si je fais ca pour la porte sélectionnée et si il en existe d'autre sur le plan alors celle-ci auront aussi la case coché

  18. #18
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Re,

    Tu es sur que le probleme ne vient pas de la mise a jour de ta vue?
    Montre comment tu fais ta mise a jour stp

  19. #19
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Points : 84
    Points
    84
    Par défaut
    Désolé je suis débutant, qu'entend tu par ma mise a jour ?

  20. #20
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Re,

    Il y a bien un moment ou tu rafraichis ta vue pour que ton activity n'affiche plus une porte en bois mais une porte ouverte.
    C'est ce morceau de code que j'aimerai voir

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/07/2012, 20h27
  2. Réponses: 1
    Dernier message: 04/06/2012, 14h14
  3. Réponses: 5
    Dernier message: 04/05/2012, 11h34
  4. Réponses: 0
    Dernier message: 26/02/2008, 10h47
  5. probléme avec une checkbox
    Par ardamus dans le forum Langage
    Réponses: 4
    Dernier message: 02/03/2006, 19h58

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