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.
Sur votre liste, utilisez setOnItemClickListener
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
*/
}
});
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
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.
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
}
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();
}
});
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
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.
}
});
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()
}