web-dev-qa-db-fra.com

Comment gérer le clic sur ListView dans Android

Comment écouter un événement sur un ListView?

C'est ce que j'ai maintenant

ListView list = (ListView)findViewById(R.id.ListView01);  
...  
list.setAdapter(adapter);  

Quand je fais ce qui suit

list.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {  
   public void onItemSelected(AdapterView parentView, View childView, 
                                                         int position, long id) 
   {  
       setDetail(position);  
   }

   public void onNothingSelected(AdapterView parentView) {  

   }  
});  

Cela ne semble rien faire sur le clic.
Et tous ces codes vivent dans une classe qui étend Activity.

139
teepusink

Sur votre liste, utilisez setOnItemClickListener

180
David Hedlund

Supposons que l'objet ListView soit lv, procédez comme suit:

lv.setClickable(true);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

  @Override
  public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {

    Object o = lv.getItemAtPosition(position);
    /* write you handling code like...
    String st = "sdcard/";
    File f = new File(st+o.toString());
    // do whatever u want to do with 'f' File object
    */  
  }
});
87
Aditya Mehta

Vous devez définir la vue gonflée "Cliquable" et "capable d'écouter les événements de clic" dans la méthode getView () de la classe de l'adaptateur.

convertView = mInflater.inflate(R.layout.list_item_text, null);
convertView.setClickable(true);
convertView.setOnClickListener(myClickListener);

et déclarez le listener de clic dans votre ListActivity comme suit,

public OnClickListener myClickListener = new OnClickListener() {
public void onClick(View v) {
                 //code to be written to handle the click event
    }
};

Cela est vrai uniquement lorsque vous personnalisez l'adaptateur en étendant BaseAdapter.

Reportez-vous à Android_SDK/samples/ApiDemos/src/com/example/Android/apis/view/List14.Java pour plus de détails

42
Vijay C

Les deux réponses avant la mienne sont correctes - vous pouvez utiliser OnItemClickListener.

Il est bon de noter que la différence entre OnItemClickListener et OnItemSelectedListener, bien que semblant subtile, est en fait significative, car la sélection et la mise au point sont liées au mode tactile de votre AdapterView.

Par défaut, en mode tactile, il n'y a pas de sélection et de mise au point. Vous pouvez jeter un oeil ici pour plus d'informations sur le sujet.

17
Dimitar Dimitrov

Cette solution est vraiment minimaliste et ne gâche pas votre code.

Dans votre list_item.xml (NON listView!) Attribuez l'attribut Android: onClick comme ceci:

<RelativeLayout Android:onClick="onClickDoSomething">

puis, dans votre activité, appelez cette méthode:

public void onClickDoSomething(View view) {
   // the view is the line you have clicked on
}
8
Amio.io

Vous devez utiliser setOnItemClickListener quelqu'un a dit.
Le code devrait être comme ceci:

listView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // When clicked, show a toast with the TextView text or do whatever you need.
        Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
    }
});
6
Shudy

Tout d'abord, la classe doit implémenter l'écouteur de clic:

implements OnItemClickListener

Puis définissez un écouteur sur ListView

yourList.setOnItemclickListener(this);

Et enfin, créez la méthode clic:

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Toast.makeText(MainActivity.this, "You Clicked at " +countries[+ position], Toast.LENGTH_SHORT).show();
}

vous pouvez jeter un oeil et télécharger le code ici

5
bourax webmaster

Utilisez setOnItemClickListener () api dans votre activité. Voici l'échantillon.

listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){

@Override
public void onItemClick(AdapterView<> parent, View view, int position, long id)
{
     // your code here.
}

});
3
Amey Haldankar

Dans Kotlin, ajoutez un écouteur à votre listeAfficher aussi simplement que Java

your_listview.setOnItemClickListener { parent, view, position, id ->   

    Toast.makeText(this, position, Toast.LENGTH_SHORT).show()

 }
0
Allen