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 :

ArrayList de Switch - comment déclarer et récupérer les ressources


Sujet :

Android

  1. #1
    Membre habitué
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 293
    Points : 145
    Points
    145
    Par défaut ArrayList de Switch - comment déclarer et récupérer les ressources
    Bonjour

    je débute en programmation Java et j'ai des difficultés syntaxiques ou autres car j'écris des lignes de codes sous Android Studio qui semblent bonnes pour l'IDE mais qui plantent à l'exécution.

    J'ai crée un layout avec des Boutons (15) et des Switch (15). A chaque bouton correspond un switch qui peut être mis ON ou OFF.
    j'ai créé un ArrayList dans lequel je voudrais mettre les 15 switch de tel façon que lorsqu'un bouton est appuyé je vais lire les paramètres de ce bouton en particulier son numéro 0 à 14 puis je vais chercher dans mon ArrayList le switch correspondant dont j'analyse l'état afin de prendre une décision.

    Ce que je n'arrive pas à faire fonctionner, c'est le chargement des switch dans l'ArrayList. J'utilise une boucle For mais je ne sais pas comment indexer la variable.

    Je recherche depuis plusieurs jours et je ne voudrais pas passer le réveillon là dessus....

    Merci d'une aide

    Michel

  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,

    Sans code explicatif, cela va être difficile de t'aider
    Montre nous ton erreur et comment tu ajoute tes switch dans ton ArrayList

    Cordialement,
    GL HF

  3. #3
    Membre habitué
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 293
    Points : 145
    Points
    145
    Par défaut Code essayé
    Bonjour

    voici mon code d'essai sachant que justement je ne sais pas comment charger l'ArrayList:
    Le programme java:
    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
    import android.support.v7.app.ActionBarActivity;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Switch;
    import android.widget.TextView;
    import java.util.ArrayList;
     
    public class Programme extends ActionBarActivity {
        private ArrayList<Switch>listeSwitch = new ArrayList<>();
        TextView Affiche, Tag;
        Button bouton ;
        Switch sw;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_programme);
            Affiche = (TextView) findViewById(R.id.txtMsg);
            Tag = (TextView) findViewById(R.id.tagMsg);
            for (int i=0;i<=15;i++) {
                sw = (Switch) findViewById(R.id.); //là je ne sais pas comment faire
                listeSwitch.add(sw);
            }
        }
     
        public void Action(View v) {
            int idBtn = v.getId(), noBtn;
            String txtBtn, txtSwh;
            Switch leSwitch;
            bouton = (Button) findViewById(idBtn);
            txtBtn = (String) bouton.getText();
            noBtn = Integer.parseInt(txtBtn);
            Affiche.setText("Commande N° " + txtBtn + " actionnée");
            int idSwitch = listeSwitch.get(noBtn).getId();
            leSwitch = (Switch) findViewById(idSwitch);
            txtSwh = (String) leSwitch.getText();
            Tag.setText("le switch est le:  " + txtSwh );
        }
    }
    Le fichier activity_programme.XML
    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
    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
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
     
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="mormic.mux.Programme">
     
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Commande multiplexée"
            android:id="@+id/textView"
            android:textSize="60dp"
            android:layout_marginLeft="125dp"
            android:layout_marginStart="125dp" />
     
        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="0"
            android:id="@+id/button0"
            android:textSize="50dp"
            android:layout_marginTop="150dp"
            android:layout_marginLeft="100dp"
            android:onClick="Action"/>
     
        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="1"
            android:id="@+id/button1"
            android:textSize="50dp"
            android:layout_alignTop="@+id/button0"
            android:layout_toRightOf="@+id/button0"
            android:onClick="Action"/>
     
        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="2"
            android:id="@+id/button2"
            android:textSize="50dp"
            android:layout_alignTop="@+id/button0"
            android:layout_toRightOf="@+id/button1"
            android:onClick="Action"/>
     
     
        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="3"
            android:id="@+id/button3"
            android:textSize="50dp"
            android:layout_alignTop="@+id/button0"
            android:layout_toRightOf="@+id/button2"
            android:onClick="Action"/>
     
     
        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="4"
            android:id="@+id/button4"
            android:textSize="50dp"
            android:layout_alignTop="@+id/button0"
            android:layout_toRightOf="@+id/button3"
            android:onClick="Action"/>
     
        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="5"
            android:id="@+id/button5"
            android:textSize="50dp"
            android:layout_below="@+id/button0"
            android:layout_alignLeft="@+id/button0"
            android:layout_alignStart="@+id/button0"
            android:onClick="Action"/>
     
        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="6"
            android:id="@+id/button6"
            android:textSize="50dp"
            android:layout_alignTop="@+id/button5"
            android:layout_toRightOf="@+id/button5"
            android:onClick="Action"/>
     
        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="7"
            android:id="@+id/button7"
            android:textSize="50dp"
            android:layout_alignTop="@+id/button5"
            android:layout_toRightOf="@+id/button6"
            android:onClick="Action"/>
     
        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="8"
            android:id="@+id/button8"
            android:textSize="50dp"
            android:layout_alignTop="@+id/button5"
            android:layout_toRightOf="@+id/button7"
            android:onClick="Action"/>
     
        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="9"
            android:id="@+id/button9"
            android:textSize="50dp"
            android:layout_alignTop="@+id/button5"
            android:layout_toRightOf="@+id/button8"
            android:onClick="Action"/>
     
        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="10"
            android:id="@+id/button10"
            android:textSize="50dp"
            android:layout_below="@+id/button5"
            android:layout_alignLeft="@+id/button0"
            android:layout_alignStart="@+id/button0"
            android:onClick="Action"/>
     
        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="11"
            android:id="@+id/button11"
            android:textSize="50dp"
            android:layout_alignTop="@+id/button10"
            android:layout_toRightOf="@+id/button10"
            android:onClick="Action"/>
     
        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="12"
            android:id="@+id/button12"
            android:textSize="50dp"
            android:layout_alignTop="@+id/button10"
            android:layout_toRightOf="@+id/button11"
            android:onClick="Action"/>
     
        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="13"
            android:id="@+id/button13"
            android:textSize="50dp"
            android:layout_alignTop="@+id/button10"
            android:layout_toRightOf="@+id/button12"
            android:onClick="Action"/>
     
        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="14"
            android:id="@+id/button14"
            android:textSize="50dp"
            android:layout_alignTop="@+id/button10"
            android:layout_toRightOf="@+id/button13"
            android:onClick="Action" />
     
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Text"
            android:textSize="50dp"
            android:id="@+id/txtMsg"
            android:layout_marginTop="500dp"
            android:layout_alignLeft="@+id/textView"
            android:layout_alignStart="@+id/textView"
            />
     
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Text"
            android:textSize="40dp"
            android:id="@+id/tagMsg"
            android:layout_marginTop="600dp"
            android:layout_alignLeft="@+id/textView"
            android:layout_alignStart="@+id/textView" />
     
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="0"
            android:text="Lumière_extérieure_arrière"
            android:id="@+id/switch0"
            android:layout_marginTop="150dp"
            android:layout_marginLeft="700dp"
            android:textOn="Poussoir"
            android:textOff="Interrup"
            android:showText="true"
            android:checked="true"
            android:enabled="true" />
     
     
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="1"
            android:text="Lumière_extérieure_avant"
            android:id="@+id/switch1"
            android:layout_below="@+id/switch0"
            android:layout_alignLeft="@+id/switch0"
            android:layout_alignStart="@+id/switch0"
            android:textOn="Poussoir"
            android:textOff="Interrup"
            android:showText="true" />
     
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="2"
            android:text="Ouverture volet avant"
            android:id="@+id/switch2"
            android:layout_below="@+id/switch1"
            android:layout_alignLeft="@+id/switch1"
            android:layout_alignStart="@+id/switch1"
            android:textOn="Poussoir"
            android:textOff="Interrup"
            android:showText="true" />
     
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="3"
            android:text="Fermeture volet avant"
            android:id="@+id/switch3"
            android:layout_below="@+id/switch2"
            android:layout_alignLeft="@+id/switch2"
            android:layout_alignStart="@+id/switch2"
            android:textOn="Poussoir"
            android:textOff="Interrup"
            android:showText="true" />
     
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="4"
            android:text="Ouverture volet arrière"
            android:id="@+id/switch4"
            android:layout_below="@+id/switch3"
            android:layout_alignLeft="@+id/switch3"
            android:layout_alignStart="@+id/switch3"
            android:textOn="Poussoir"
            android:textOff="Interrup"
            android:showText="true" />
     
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="5"
            android:text="Fermeture volet arrière"
            android:id="@+id/switch5"
            android:layout_below="@+id/switch4"
            android:layout_alignLeft="@+id/switch4"
            android:layout_alignStart="@+id/switch4"
            android:textOn="Poussoir"
            android:textOff="Interrup"
            android:showText="true" />
     
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="6"
            android:text="Activation volet garage"
            android:id="@+id/switch6"
            android:layout_below="@+id/switch5"
            android:layout_alignLeft="@+id/switch5"
            android:layout_alignStart="@+id/switch5"
            android:textOn="Poussoir"
            android:textOff="Interrup"
            android:showText="true" />
     
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="7"
            android:text="item>Activation lumière piscine"
            android:id="@+id/switch7"
            android:layout_below="@+id/switch6"
            android:layout_alignLeft="@+id/switch6"
            android:layout_alignStart="@+id/switch6"
            android:textOn="Poussoir"
            android:textOff="Interrup"
            android:showText="true" />
     
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="8"
            android:text="Ouverture volet piscine"
            android:id="@+id/switch8"
            android:layout_below="@+id/switch7"
            android:layout_alignLeft="@+id/switch7"
            android:layout_alignStart="@+id/switch7"
            android:textOn="Poussoir"
            android:textOff="Interrup"
            android:showText="true" />
     
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="9"
            android:text="Fermeture volet piscine"
            android:id="@+id/switch9"
            android:layout_below="@+id/switch8"
            android:layout_alignLeft="@+id/switch8"
            android:layout_alignStart="@+id/switch8"
            android:textOn="Poussoir"
            android:textOff="Interrup"
            android:showText="true" />
     
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="10"
            android:text="Chauffage véranda"
            android:id="@+id/switch10"
            android:layout_below="@+id/switch9"
            android:layout_alignLeft="@+id/switch9"
            android:layout_alignStart="@+id/switch9"
            android:textOn="Poussoir"
            android:textOff="Interrup"
            android:showText="true" />
     
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="11"
            android:text="Ouvertute complète portail"
            android:id="@+id/switch11"
            android:layout_below="@+id/switch10"
            android:layout_alignLeft="@+id/switch10"
            android:layout_alignStart="@+id/switch10"
            android:textOn="Poussoir"
            android:textOff="Interrup"
            android:showText="true" />
     
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="12"
            android:text="Ouverture portail piéton"
            android:id="@+id/switch12"
            android:layout_below="@+id/switch11"
            android:layout_alignLeft="@+id/switch11"
            android:layout_alignStart="@+id/switch11"
            android:textOn="Poussoir"
            android:textOff="Interrup"
            android:showText="true" />
     
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="13"
            android:text="Fermeture portail"
            android:id="@+id/switch13"
            android:layout_below="@+id/switch12"
            android:layout_alignLeft="@+id/switch12"
            android:layout_alignStart="@+id/switch12"
            android:textOn="Poussoir"
            android:textOff="Interrup"
            android:showText="true" />
     
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="14"
            android:text="Lumières intérieures"
            android:id="@+id/switch14"
            android:layout_below="@+id/switch13"
            android:layout_alignLeft="@+id/switch13"
            android:layout_alignStart="@+id/switch13"
            android:textOn="Poussoir"
            android:textOff="Interrup"
            android:showText="true"
            android:checked="true" />
     
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Mode Interrupteur/Poussoir"
            android:id="@+id/textMode"
            android:layout_marginTop="120dp"
            android:layout_marginLeft="760dp" />
     
    </RelativeLayout>

  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
    Bonjour,

    Pour moi, la méthode la plus propre est de créer une CustomView qui regroupe ton bouton et ton Switch.
    Dans cette CustomView, tu met ton listener sur ton bouton et dans la fonction de callback, tu fais ta vérification.
    En fonction de ta vérification, tu appel (ou pas) une fonction de ton fragment.

    C'est peut être assez compliqué a mettre en place pour un débutant mais si tu le souhaite, je peux t'aider a mettre ca en place (c'est pas très long).
    C'est intéressant parce que ca t’évite un long pavé dans le onCreate() et tu n'as plus besoin de stocker tes références.

    Si tu veux faire au plus simple, tu va devoir récupérer tes références une a une, je ne crois pas (a vérifier) que ce soit possible de faire ce que tu souhaite faire (a confirmer, je n'en suis pas certain).

    GL HF

  5. #5
    Membre habitué
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 293
    Points : 145
    Points
    145
    Par défaut
    Merci Altak pour ton aide
    En fait je voulais éviter de charger les éléments un à un; imagine si j'avais 200 boutons et switch !
    Je prends exemple en Visual Basic où par une simple instruction controls("bouton" + i) dans un boucle on peut charger une multitude d'éléments.
    Je pense qu'un langage évolué et moderne comme Java doit avoir une telle méthode.
    Quant à CustomView je n'ai aucune idée de ce que cela est.
    Si tu peux m'en dire plus ou bien je vais faire des recherche sur le WEB.

    Cordialement

    Michel

  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
    Pour la CustomClass, il te suffit de créer un layout qui comprend tes deux widget et une classe qui hérite d'un ViewGroup (si tu l'extends d'un LinerarLayout par exemple, pense bien a englober tes deux widget dans un LineraLayout) :

    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
     
     
    public class CustomView extends LinearLayout{
     
        public CustomView (Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            init(attrs);
        }
     
        public CustomView (Context context, AttributeSet attrs) {
            super(context, attrs);
            init(attrs);
        }
     
        public CustomView (Context context) {
            super(context);
            init(null);
        }
     
        private void init(AttributeSet attrs) {
            View layout = inflate(getContext(), R.layout.layout_for_custom_view, this);
            // Ajoute ton listener sur ton bouton ici
        }
    }
    Le layout donnera quelque chose 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
    15
    16
    17
    18
     
     
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        .
        .
        .>
     
            <Button
                .
                .
                . />
     
            <Switch
                .
                .
                . />
    </LinearLayout>
    Dans ton fragment, récupére ton RelativeLayout et ajoute dynamiquement le nombre de customView que tu souhaite. Ca devrait donner quelque chose comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    RelativeLayout layout = rootView.findViewById(R.id.id_du_layout);
     
    for (int i = 0; i < nbrView; i++){
         layout.addView(new CustomView(this.getActivity()));
    }
    (Je te conseille d'utiliser autre chose qu'un RelativeLayout pour afficher tes customView, tu risque d'avoir énormément de souci pour la mise en page. Un LinearLayout ou une même ListView serais peut être plus approprié).

    Quand tu en sera arrivé a avoir tes vues correctement sans avoir d'erreursur la console, nous continuerons

    PS: Android permet d'ajouter des vues dynamiquement (comme je viens de te montrer) mais si tu met tes vues directement dans ton xml, tu devras récupérer tes références manuellement (il me semble) =/

    GLHF

  7. #7
    Membre habitué
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 293
    Points : 145
    Points
    145
    Par défaut
    Bonjour GL HF

    Tous mes vœux pour cette nouvelle année et merci pour ton aide et à tous ceux qui permettent aux débutants comme moi d'évoluer dans cette science de la programmation.
    J'ai eu un peu de difficultés à comprendre ta dernière proposition et je pense me remettre le nez dans les cours Java et autre XML.
    J'ai encore essayé en vain d'accéder aux données XML en dynamique avec un index mais je crois que tu as raison, c'est impossible. Quel dommage !
    Comme j'avais besoin d'avancer sur mon projet et de voir quelque chose de positif sachant que je n'ai pas besoin de construire mon interface graphique de façon dynamique, j'ai procédé tout simplement comme suit:
    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
    64
    65
    66
    67
    68
    69
    70
    package mormic.mux;
     
    import android.os.Bundle;
    import android.support.v7.app.ActionBarActivity;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Switch;
    import android.widget.TextView;
    import java.util.ArrayList;
     
    public class Programme extends ActionBarActivity {
        private ArrayList<Switch> listeSwitch = new ArrayList<>();
        TextView Affiche, Tag;
        Button bouton;
        Switch sw0,sw1,sw2,sw3,sw4,sw5,sw6,sw7,sw8,sw9,sw10,sw11,sw12,sw13,sw14;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_programme);
            Affiche = (TextView) findViewById(R.id.txtMsg);
            Tag = (TextView) findViewById(R.id.tagMsg);
            sw0 = (Switch) findViewById(R.id.switch0);
            listeSwitch.add(sw0);
            sw1 = (Switch) findViewById(R.id.switch1);
            listeSwitch.add(sw1);
            sw2 = (Switch) findViewById(R.id.switch2);
            listeSwitch.add(sw2);
            sw3 = (Switch) findViewById(R.id.switch3);
            listeSwitch.add(sw3);
            sw4 = (Switch) findViewById(R.id.switch4);
            listeSwitch.add(sw4);
            sw5 = (Switch) findViewById(R.id.switch5);
            listeSwitch.add(sw5);
            sw6 = (Switch) findViewById(R.id.switch6);
            listeSwitch.add(sw6);
            sw7 = (Switch) findViewById(R.id.switch7);
            listeSwitch.add(sw7);
            sw8 = (Switch) findViewById(R.id.switch8);
            listeSwitch.add(sw8);
            sw9 = (Switch) findViewById(R.id.switch9);
            listeSwitch.add(sw9);
            sw10 = (Switch) findViewById(R.id.switch10);
            listeSwitch.add(sw10);
            sw11 = (Switch) findViewById(R.id.switch11);
            listeSwitch.add(sw11);
            sw12= (Switch) findViewById(R.id.switch12);
            listeSwitch.add(sw12);
            sw13= (Switch) findViewById(R.id.switch13);
            listeSwitch.add(sw13);
            sw14= (Switch) findViewById(R.id.switch14);
            listeSwitch.add(sw14);
     
        }
     
        public void Action(View v) {
            int idBtn = v.getId();
            int noBtn;
            Switch leSwitch;
            String txtBtn;
            bouton = (Button) findViewById(idBtn);
            txtBtn = (String) bouton.getText();
            noBtn = Integer.parseInt(txtBtn);
            Affiche.setText("Commande N° " + txtBtn + " actionnée");
            leSwitch= listeSwitch.get(noBtn);
            if (leSwitch.isChecked())
                Tag.setText("le switch est le ON");
            else
                Tag.setText("Le switch est OFF");
        }
    }
    Je ne trouve pas génial le fait de récupérer les données des switch un par un, mais ça marche.

    Cordialement et peut-être à une autre fois.
    Michel

  8. #8
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Bonjour,

    On dirait que tu ne lis pas les réponses de Altak Ce qu'il suggérait c'est de faire le lien automatiquement entre chaque bouton et chaque switch, indépendamment du reste du programme.
    Mais bon....

    1. Java est un langage fortement typé... une chaine (String) n'est pas un entier (int), et encore moins un identifiant de variable. Ce qu'on fait avec des basics (ou du javascript par exemple), qui sont des langages interprétés, est irréalisable avec un langage compilé.
    En l’occurrence, ce que tu cherche est de:
    (a) construire le nom de l'id de la view dans une chaine (un truc genre: String id = "switch_"+Integer.toString(switchIdx); )

    (b) récupérer la valeur de cet ID. Il y a deux moyens possibles:
    Par la version "android" pur Resources.getIdentifier() (certains paramètres peuvent rester vides).
    Par la réflexivité de java, un truc genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    R.id.class.getDeclaredField(nom).getInt(null)
    Donc tout cela est faisable dans une boucle.

    2. Java a des conventions... par exemple un identifiant (nom) qui commence par une majuscule veut dire dans 99,99% des cas que c'est un "type" (classe, enum, interface)... En lisant ton code, pour moi: "Affiche", "Tag" et même la fonction "Action" sont des types et non donc des variables.
    La limite à la longueur des identifiants est (très) grande, et on peut se permettre de rajouter un tas d'information dans un identifiant....
    Par exemple, "Programme" est un mauvais nom... c'est une activité... ce devrait être par exemple "ProgrammeActivity".
    "Tag" pourrait être "textTag" pour indiquer que c'est un TextView... etc....


    Exemple de code qui correspond à ce que tu fais....
    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
     
    class ProgrammeActivity extends Activity
    {
         private Switch[]         allSwitches; // pas besoin de array-list ! puisque le nombre est prédéfini !
         private static final int[] ALL_SWITCHES = { R.id.switch0, R.id.switch1, ..... };   // on stock les identifiants. (private static final == constante).
     
         public void onCreate(Bundle savedState)
         {
              super.onCreate(savedState);
              setContentView(...);
     
              this.allSwitches = new Switch[ALL_SWITCHES.length];
              for (int i = 0; (i < ALL_SWITCHES.length); i++) 
                      this.allSwitches[i] = (Switch) findViewById(ALL_SWITCHES[i]);
         }
    }
    Maintenant si il peut y avoir 200 switchs... le code a un problème... enfin... la conception de l'application a un problème (c'est inutilisable).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  9. #9
    Membre habitué
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 293
    Points : 145
    Points
    145
    Par défaut
    Merci pour cette intervention

    Généralement lorsque l'on pose une question et que quelqu'un à l'amabilité d'y répondre pour aider, on lit les réponses.
    Pour ma part, j'ai bien dû lire une dizaine de fois la réponse de Altak, mais, je m'en excuse, je n'ai rien compris.
    Comme je l'ai précisé, je suis débutant en la matière et pour mettre en application j'essaie de faire des choses simples.
    Mais j'ai l'impression qu'avec Java ça devient vite une "usine à gaz".
    Par exemple, dans vos propositions que j'ai lues et relativement bien comprises, le "this.allSwitches" me laisse interrogatif.
    Que veut dire votre conclusion: "le code a un problème... enfin... la conception de l'application a un problème (c'est inutilisable)" ?

    Bien, je crois que je vais retourner à mes études et que je reviendrai poser des questions lorsque je serai devenu grand.

    Merci encore pour cette leçon d'humilité.

  10. #10
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Je crois que tu as mal compris le but de ma remarque. Comme tu ne posais aucune question sur le messages précédents on aurait vraiment pu supposer que tu ne les avait pas lu.

    D'autre part, j'ai collé un bout de code assez compréhensible il me semble, et qui utilisait à la fois une boucle et évitait la réflexivité (des domaines un peu complexes de Java je l'admet).


    Ma remarque finale concernait les interfaces en général... une interface qui a 200 switchs est très certainement mauvaise (un peu comme les tables de mixage professionnelles qui sont inutilisable pour le commun des mortels).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  11. #11
    Membre habitué
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 293
    Points : 145
    Points
    145
    Par défaut
    J'exagérais un peu lorsque je parlais de 200 boutons et switches. Mais je trouve qu'une pour une quinzaine de boutons et switches, cela devient élégant d'utiliser des tableaux.
    Ton morceau de code répond parfaitement à ma demande et je t'en remercie. Si j'ose abuser, pourrais-tu m'expliquer le pourquoi de la déclaration de allSwitches au niveau de la class puis la création d'une instance avec le "this". J'en ai bien compris l'utilisation dans le cas d'un constructeur, mais là je ne vois pas.
    Merci
    Michel

  12. #12
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Le "this." c'est une habitude que j'ai pour différencier les membres de l'instance, des variables locales.

    Certains aiment préfixer (avec 'm' par exemple pour membre), perso je prefère utiliser "this."
    Mais "this." est optionnel.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

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

Discussions similaires

  1. [Python 2.X] Comment accéder voire récupérer les données de google analytics ?
    Par MichaelREMY dans le forum Réseau/Web
    Réponses: 0
    Dernier message: 25/06/2015, 10h03
  2. Réponses: 4
    Dernier message: 16/06/2011, 13h07
  3. Réponses: 1
    Dernier message: 22/05/2010, 01h16
  4. Réponses: 7
    Dernier message: 08/07/2009, 15h15
  5. Réponses: 7
    Dernier message: 24/01/2007, 17h05

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