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 :

Menu contextuel sur une ListView


Sujet :

Composants graphiques Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut Menu contextuel sur une ListView
    bonjour ,

    J'ai une listview crée depuis une base de données dès que je clique sur un item cela ouvre une autre activité avec des infos concernant l'item choisie
    je voudrai crée un menu qui s'afficherai dès que je reste appuyé sur l'item et ainsi crée une action qui me permettra de supprimé dans la base de données l'item

    je veux juste quelle méthode utilisé
    voici ma listview que j'ai crée :


    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
    listViewSearch = (ListView) findViewById(R.id.listViewSearch);
    			SimpleAdapter adapter= new SimpleAdapter(this, data,		
    			android.R.layout.simple_list_item_2, 
    			new String[] {"Line1", "Line2",}, 
    			new int[] {android.R.id.text1, android.R.id.text2,});
    			listViewSearch.setAdapter(adapter);
    			listViewSearch.setOnItemClickListener(new OnItemClickListener()
    			    {	
    			    	@Override
    			    	public void onItemClick(AdapterView<?> parent, View view, int position, long id)
    			    	{	
    			    		Collection<String> element= data.get(position).values();
    			    		String id_modele[]= element.toArray(new String[2]);
    						Intent intent = new Intent (Recherche_materiel.this, Materiel.class);
    						intent.putExtra("element",id_modele[1]);
    						intent.putExtra("idMarque",marque.get(position));
    						intent.putExtra("idnum",num_serie.get(position));
    						intent.putExtra("Materiel",Materiel.get(position));
     
    						startActivity(intent);
     
    			    	}		
    			    });

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    Cherche du côté onCreateContextMenu et onContextItemSelected.

    cf. https://www.linux.com/learn/tutorial...p-development-

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 273
    Points : 150
    Points
    150
    Par défaut
    sinon tu peux tout simplement ajouter un setOnLongTouchListener et assigner comme action, l'ouverture d'un menu

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par danieldou Voir le message
    sinon tu peux tout simplement ajouter un setOnLongTouchListener et assigner comme action, l'ouverture d'un menu

    j'ai quelque question :

    Est-ce que je peux crée le onCreateContextMenu directement après mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void onItemClick(AdapterView<?> parent, View view, int position, long id)
    je ne connais pas trop les menus.

    et permettre si possible de passez dans une fonction pour supprimez l'élément que je choisie

    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
    private Runnable runsupp= new Runnable()
    	{	public void run()
    		{	Log.i(TAG, "SEM "+handler.sendEmptyMessage(-4));
    			try
    			{	
    				String req ="Delete From Personne Where nom=’"+nom+"’";
    				Log.i(TAG,"req "+req);
    				statement.executeUpdate(req);									
    			}
    			catch (java.sql.SQLException e)
    			{	e.printStackTrace();
    				Log.i(TAG,"Erreur de requète"+e.getMessage());
    				handler.sendEmptyMessage(-5);
    			}			
    		}
    	};

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 273
    Points : 150
    Points
    150
    Par défaut
    pour le menu tu peux essayer quelque chose de ce genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    listView.setOnLongClickListener(new OnLongClickListener() {
     
                @Override
                public boolean onLongClick(View v) {
                    ((Activity)mContext).openContextMenu(v);
                    return true;
                }
            });
    et si tu veux supprimer l'item sélectionné de la liste, si tu récupère l'id de l'item et que le transmet au menu pour qu'il le supprime lors du clic d'un des boutons du menu, ça devrai marcher

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut
    @danieldou MERCI


    je pense utilisé la méthode de putextra pour récupere l'id

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 273
    Points : 150
    Points
    150
    Par défaut
    n’hésite pas si tu a d'autres questions

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut
    salut

    dès que j'essaye de mettre le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    listView.setOnLongClickListener(new OnLongClickListener() {
     
                @Override
                public boolean onLongClick(View v) {
                    ((Activity)mContext).openContextMenu(v);
                    return true;
                }
            });


    qu est-ce-que le mContext ?

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 273
    Points : 150
    Points
    150
    Par défaut
    c'est le context de ce qui doit etre lancé lors du long click, ici le menu, regarde la documentation officielle sur les contextmenu http://developer.android.com/referen...ntextMenu.html

    quand tu créé ton menu tu lui donne un context pour l'identifier, tu marque ce context a la place de mContext pour que ton menu puisse s'ouvrir lors du long click

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut
    Je comprend mieux merci

    j'ai crée un menu pourrai tu me dire si cela est correct :

    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
    @Override
    	    public void onCreateContextMenu(ContextMenu menu, View view,ContextMenuInfo menuInfo)
    	    {
    	    super.onCreateContextMenu(menu, view, menuInfo);
    	    CreateMenu(menu);
    	    }
    	    @Override
     
    	    public boolean onContextItemSelected(MenuItem item)
    	    {
    	    return MenuChoice(item);
    	    }
     
    	    private void CreateMenu(Menu menu)
    	    {
     
    	            menu.add(0, 4,4, "Supprimer");
    	            menu.add(0, 5,5, "Annuler");
    	    }
    	    private boolean MenuChoice(MenuItem item)
    	    {
    	            switch (item.getItemId())
    	            {
    	            case 0:
    	                Toast.makeText(this, "You clicked on Item 1",Toast.LENGTH_LONG).show();
    	                return true;
    	            case 1:
    	                Toast.makeText(this, "You clicked on Item 2",Toast.LENGTH_LONG).show();
    	                return true;	     
    	            }
    	            return false;
    	    }

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 273
    Points : 150
    Points
    150
    Par défaut
    a priori c'est correct, je n'ai pas eu le temps de le tester pour vérifier, mais intègre le a ton code normalement ça devrai marcher, dit le moi si ça ne marche pas, je t'aiderai a résoudre le problème si il y en a un

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut
    J'ai bien intégré le code a mon activité il n'y a aucune erreur heureusement

    je n'ai pas encore très bien compris le mContext j'ai essayer de le remplacé pour lancé le menu mais je n'y arrive pas je ne sais pas avec quoi je peux le remplacé par rapport a mon menu que j'ai crée et que j'ai cité

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    j'ai essayer de suivre un tutoriel pour le contextual menu mais je ne comprend toujours pas le context que je dois ajouté dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    listView.setOnLongClickListener(new OnLongClickListener() {
     
                @Override
                public boolean onLongClick(View v) {
                    ((Activity)mContext).openContextMenu(v);
                    return true;
                }
            });
    ou il faut changer le mcontext voici le code du tuto :

    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
     
    	private static final int NEW_MENU_ITEM = Menu.FIRST;
    	private static final int SAVE_MENU_ITEM = NEW_MENU_ITEM + 1;
     
     
    	@Override
    	public boolean onContextItemSelected(MenuItem item) {
    		switch (item.getItemId()) {
    		case NEW_MENU_ITEM:
    			showMsg("New");
    			break;
    		case SAVE_MENU_ITEM:
    			showMsg("Save");
    			break;
    		}
    		return super.onContextItemSelected(item);
    	}
     
    	@Override
    	public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    		super.onCreateContextMenu(menu, v, menuInfo);
    		menu.setHeaderTitle("My Context Menu");
    		menu.add(0, NEW_MENU_ITEM, 0, "New");
    		menu.add(0, SAVE_MENU_ITEM, 1, "Save");
    	}
     
    	private void showMsg(String message) {
    		Toast msg = Toast.makeText(Recherche_materiel.this, message, Toast.LENGTH_LONG);
    		msg.setGravity(Gravity.CENTER, msg.getXOffset() / 2,
    				msg.getYOffset() / 2);
    		msg.show();
    	}

  14. #14
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Toast msg = Toast.makeText(Recherche_materiel.this, message, Toast.LENGTH_LONG);
    Salut,
    Tu utilises déjà ton context pour afficher le Toast.
    Pour faire simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mContext = Recherche_materiel.this;
    "Quand la lune n'est pas là, la nuit mène une existence obscure"

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut
    Merci j'ai bien compris par contre quand je fait un long clik sur la liste sa ne veut pas affiché le menu

  16. #16
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832
    Par défaut
    Et si dans ton LongClick tu fais un :
    Ca fonctionne ?

    Sinon, une autre solution pour ce que tu souhaites faire; Tu peux utiliser une simple AlertDialog avec tes 2 choix :


    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
    listView.setOnLongClickListener(new OnLongClickListener() {
     
                @Override
                public boolean onLongClick(View v) {
                        AlertDialog.Builder builder = new AlertDialog.Builder(context);
                        builder.setTitle("Title");
                        builder.setMessage("Message");
     
                        builder.setPositiveButton("Supprimer", new DialogInterface.OnClickListener() 
                        {
                            public void onClick(DialogInterface arg0, int arg1)
                            {
                               //Suppression de l'item
                            }
                        });
     
                        builder.setNegativeButton("Annuler", new DialogInterface.OnClickListener() 
                        {
                            public void onClick(DialogInterface arg0, int arg1) 
                            {
                                //Annuler
                            }
                        });
     
                        builder.show();
                    return true;
                }
            });
    "Quand la lune n'est pas là, la nuit mène une existence obscure"

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut
    Merci @LeBzul

    malheureusement sa ne fonctionne pas même avec l'alertdialog je ne comprend pas pourquoi

    j'ai remplacé le context par monactivity.this

  18. #18
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832
    Par défaut
    Es tu sur de bien passer dans la methode LongClick ?
    Un moyen simple de vérifier de mettre un log à cet endroit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Log.d("LongClick","LongClick OK");
    Tu peux voir tous les logs dans la vue LogCat de l'IDE.

    Si tu ne passes pas dedans, c'est que le problème n'est pas.
    "Quand la lune n'est pas là, la nuit mène une existence obscure"

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut
    merci je te tiendrai au courant de l'avancement

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut
    Salut,

    non je ne rentre pas dans la fonction listViewSearch.setOnLongClickListener(new OnLongClickListener()

    cette fonction je l'ai mis dans le onCreate je me suis pas trompé

Discussions similaires

  1. Réponses: 7
    Dernier message: 30/05/2009, 23h43
  2. Menu contextuel sur une listbox
    Par Silverstone dans le forum C++
    Réponses: 2
    Dernier message: 03/02/2008, 19h25
  3. [VB.NET] Menu contextuel sur une extension
    Par ricil78 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 08/08/2007, 17h11
  4. Menu contextuelle sur une liste?
    Par _developpeur_ dans le forum Access
    Réponses: 2
    Dernier message: 24/01/2006, 14h33
  5. Afficher un menu contextuelle sur le click droit d'une image
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/01/2006, 12h19

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