IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

ListView start ImageView


Sujet :

Composants graphiques Android

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 11
    Points : 9
    Points
    9
    Par défaut ListView start ImageView
    Bonjour tout le monde j'essai de faire une application composé de plusieurs onglets et plusieurs ListView j'aimerai donc que chaque item de mes Listview lance une ImageView .
    J'ai une solution mais ça m'oblige à créer une class pour un Item , j'ai environ 50 items répartis dans les différentes ListView donc je vais pas créer 50 class pour au final faire toujours la même chose ...

    Voila mon code :
    Le Tab1


    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
    package cbp.st2s;
     
    import android.app.Activity;
    import android.app.AlertDialog;
     
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.HashMap;
     
    import cbp.st2s.CBPST2SActivity;
     
    import cbp.st2s.Tab5;
     
    import cbp.st2s.formulaire1;
     
     
    import cbp.st2s.R;
    import android.app.Activity;
    import android.content.ActivityNotFoundException;
    import android.content.Intent;
     
    import android.net.Uri;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    import android.widget.AdapterView.OnItemClickListener;
    import android.os.Bundle;
     
     
    public class Tab1 extends Activity {
    	private ListView maListViewPerso;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.onglet1);
     
     
     
     
     
     
     
                    maListViewPerso = (ListView) findViewById(R.id.listView1);
                    ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();
                    HashMap<String, String> map;
                    map = new HashMap<String, String>();
                    map.put("titre", "1 - STI STL");
                    map.put("img", String.valueOf(R.drawable.fleche));
                    listItem.add(map);
                    map = new HashMap<String, String>();
                    map.put("titre", "2 - STI Bio");
                    map.put("img", String.valueOf(R.drawable.fleche));
                    listItem.add(map);
     
     
                    SimpleAdapter mSchedule = new SimpleAdapter (this.getBaseContext(), listItem, R.layout.afichageitem,
                           new String[] {"img", "titre" }, new int[] {R.id.fleche, R.id.titre});
                    maListViewPerso.setAdapter(mSchedule);
     
     
                    maListViewPerso.setOnItemClickListener(new OnItemClickListener() {
                  	  public void onItemClick(AdapterView<?> a, View v, int position, long id) {
     
     
     
                  	    HashMap<String, String> map = (HashMap<String, String>) maListViewPerso.getItemAtPosition(position);
                  	    if(map.get("titre").equals("1 - STI STL")) {
                  	        startActivity(new Intent(Tab1.this, formulaire1.class));
                  	        return;
                  	    }
                  	    if(map.get("titre").equals("2 - STI Bio")) {
                  	        startActivity(new Intent(Tab1.this, formulaire2.class));
                  	        return;
                  	    }
     
     
     
     
     
     
     
     
                		      Intent intent = new Intent(Intent.ACTION_VIEW);
     
                		      startActivity(intent);
                  	  };
                    });
                    }
     
     
     
          public void onClick(View src) {
        	    Intent i = new Intent(this, CBPST2SActivity.class);
        	    startActivity(i);
        	 };
          }
    Lorsque je clique sur "1 - STI STL" ça lance formulaire1 que voila :

    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
    package cbp.st2s;
     
     
     
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.Button;
    import android.widget.ImageView;
     
    public class formulaire1 extends Activity {
     
    	Button button;
    	ImageView image;
     
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.webface);
     
    		addListenerOnButton();
     
    	}
     
    	public void addListenerOnButton() {
     
    		image = (ImageView) findViewById(R.id.imageView1);
     
     
     
     
     
     
    	}
     
    }





    Après le TOP serait que je puisse basculer d'un onglet à l'autre en gardant mon ImageView affiché ( exemple: j'ouvre le cours "1 - STI STL" puis je vais sur l'onglet annales et j'ouvre mon sujet puis je reviens sur l'onglet 1 et vois directement la formule qu'il me faut pour mon exercice comme ça je peux naviguer d'un onglet à l'autre en ayant mon cours et mon sujet sans devoir reclicker dessus )

  2. #2
    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
    Citation Envoyé par gogui63 Voir le message
    J'ai une solution mais ça m'oblige à créer une class pour un Item , j'ai environ 50 items répartis dans les différentes ListView donc je vais pas créer 50 class pour au final faire toujours la même chose ..
    Pourquoi ?
    50 instances certainement, 50 classes je ne vois pas pourquoi ?
    Quelle est cette solution ?

    Et puis d'ailleurs, quel est le problême ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Merci de m'avoir répondu je ré explique plus précisément mon problème
    Car d'apres mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(map.get("titre").equals("1 - STI STL")) {
                  	        startActivity(new Intent(Tab1.this, formulaire1.class));
                  	        return;
                  	    }
    Si j'appui sur "1 - STI STL" je lance formulaire1.class

    et ceux pour chaque item donc environ 10 Listview dans mon application et dans ces 10 ListVIew environ une 50ene d'items répartis donc si je continue mon application en utilisant cette méthode je dois crée 50 .class correspondant à mes 50 items ...

    Et c'est donc ça mon problème j'aimerai savoir si il n'y a pas une méthode plus simple pour faire ce que je veux faire.

  4. #4
    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
    Déjà, faire un tableau sans doute:

    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
     
    enum Destination
    {
         sti_stl(R.string.sti_stl,formulaire1.class),
         ...
         ;
     
     
     
         int   titleId;
         Class<? extends Activity> destActivity;
     
         Destination(int id, Class<? extends Activity> dest)
         { this.titleId = id; this.destActivity = dest; }
     
         public String getTitle(Context ctxt)
         {
               return ctxt.getString(this.titleId);
         }
     
         public void start(Context ctxt)
         {
               startActivity(new Intent(ctxt, this.destActivity);
         }
    }
    Ensuite, dans le code il suffit d'énumérer les Destination (Destination.values() je crois), et de les utiliser dans la ListView...
    Et le onItemClick de la ListView:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        ListView lv = (ListView) findViewById(...);
        ArrayAdapter<Destination> ad = ...;
        lv.setOnClickListener(new OnItemClickListener() {
            public void onClick(...)
            {
                Destination dest = getObject(pos);
                dest.start();
            }
         }
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. Modification d'une ImageView au sein d'une ListView
    Par kirasakuya dans le forum Composants graphiques
    Réponses: 5
    Dernier message: 12/12/2011, 14h26
  2. Ajouter un ImageView au-dessus d'un ListView
    Par sarrajbs dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 31/03/2011, 23h17
  3. ListView et ImageView dans la même activity ?
    Par clege dans le forum Composants graphiques
    Réponses: 9
    Dernier message: 20/02/2011, 14h16
  4. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49
  5. ListView
    Par SnickeursMan dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/08/2002, 10h42

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