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 :

click "court" et click long


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Par défaut click "court" et click long
    Dans mon application j'ai une ListView et je voudrais pourvoir faire un click court avec une première action et un clic long avec une deuxieme.

    Les 2 clicks fonctionnent mais en même temps.

    C'est a dire que si je fais un clic court ca fonctionne bien j'ai ma 1ere action qui se déclenche.
    Par contre si je fais un click long j'ai ma 1ere action et ma 2eme action qui se declenchent en même tempsalors que je voudrais que la 2eme.

    J'espere que je suis assez clair (dur dur d'expliquer) !!!!!!!!!

    Je pense que ca doit venir de la construction de mon programme mais la je sèche sur la solution à mon problème.

    Merci d'avance pour votre aide.

    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
    public class tuto extends Activity 
    {  
    	/** Déclaration des variables */
    	private ListView maListView;
    	private ArrayList<HashMap<String, String>> maArrayList = new ArrayList<HashMap<String, String>>();
        private HashMap<String, String> map;
        private SimpleAdapter mSchedule; 
     
    	/**Programme principal */
    	//@Override
    	public void onCreate(Bundle savedInstanceState) 
    	{
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);  
     
     
            /** Je recupere les references de mes objets */
            maListView = (ListView)findViewById(R.id.maListView);
     
            /** Je creer une liste de STRING */
            map = new HashMap<String, String>();
            //on rempli le premier item
            map.put("titre", "Mon premier mémo");
            map.put("description", "Faire les courses\nessai\nblablablablablabla");
            map.put("date", "Création :\n26/12/1975");
            map.put("alarme", "Alarme : non");
            //on ajoute le hasmap à maListView
            maArrayList.add(map);
     
            map = new HashMap<String, String>();
            //on rempli le premier item
            map.put("titre", "Mon deuxieme mémo");
            map.put("description", "Faire la fête \nessai\nblablablablablabla");
            //on ajoute le hasmap à maListView
            maArrayList.add(map);
     
            /** Je creer un adaptateur pour lier la ArrayList a ma ListView */
            mSchedule = new SimpleAdapter (this.getBaseContext(), maArrayList, R.layout.affichagemalistview,
            		new String[] {"titre", "description"}, new int[] {R.id.titre, R.id.description});
     
            /** je lie les deux */
            maListView.setAdapter(mSchedule);
            maListView.setLongClickable(true);
     
           //Enfin on met un écouteur d'évènement sur la listView
            maListView.setOnItemClickListener(new OnItemClickListener() 
            {
     
    			public void onItemClick(AdapterView<?> a, View v, int position, long id) 
            	{
            		//on récupère la HashMap contenant les infos de la listView (titre, description)
    				HashMap<String, String> map = (HashMap<String, String>) maListView.getItemAtPosition(position);
            		//on créer une boite de dialogue
            		/** Préparation de ma fenêtre perso */
     
                    LayoutInflater factory = LayoutInflater.from(tuto.this);
            		View alertDialogView = factory.inflate(R.layout.descriptionmemo, null);
            		AlertDialog.Builder adb = new AlertDialog.Builder(tuto.this);
            		//On affecte la vue personnalisé 
            		adb.setView(alertDialogView);
            		//On donne un titre à l'AlertDialog
            		adb.setTitle(map.get("titre"));
            		TextView monTextView = (TextView)alertDialogView.findViewById(R.id.TextView1);
            		String essai = map.get("description");
            		monTextView.setText(essai);
            		//On affecte un bouton "OK" à notre AlertDialog et on lui affecte un évènement
            		adb.setPositiveButton("OK", new DialogInterface.OnClickListener() 
            		{
            			public void onClick(DialogInterface dialog, int which) 
            			{
     
            			}
            		});
            		adb.show();
            	}
            });
     
            maListView.setOnItemLongClickListener(new OnItemLongClickListener() 
            {
     
    			@Override
    			public boolean onItemLongClick(AdapterView<?> a, View v, int position, long id) 
    			{
    				Toast.makeText(tuto.this, "clic long", 1000).show();
    				return false;
    			}
    		});
        }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Par défaut
    C'est bon j'ai trouvé la solution à mon problème

    Donc dans le public boolean onItemLongClick il faut faire un return true si on ne veut pas propager l’événement.
    Si on laisse return false, l’événement est maintenu et le click simple est validé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     maListView.setOnItemLongClickListener(new OnItemLongClickListener() 
            {
     
    			@Override
    			public boolean onItemLongClick(AdapterView<?> a, View v, int position, long id) 
    			{
    				Toast.makeText(tuto.this, "clic long", 1000).show();
    				return true;
    			}
    		});

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

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