Domanda

Come faccio ascoltare clicca evento su un ListView?

Questo è quello che ho adesso

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

Quando faccio il seguente

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

   public void onNothingSelected(AdapterView parentView) {  

   }  
});  

Ciò non sembra di fare nulla al clic.
E tutti quelli Codice dal vivo all'interno di una classe che estende attività.

È stato utile?

Soluzione

Sulla visualizzazione elenco, uso setOnItemClickListener

Altri suggerimenti

oggetto ListView Supponiamo che è lv, effettuare le seguenti operazioni -

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
    */  
  }
});

È necessario impostare la vista gonfiato "cliccabile" e "in grado di ascoltare cliccare eventi" nel metodo () classe di adattatori GetView.

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

e dichiarare il clic ascoltatore nel vostro ListActivity come segue,

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

Questo è vero solo quando si sta personalizzando l'adattatore estendendo BaseAdapter.

Fare riferimento alle ANDROID_SDK / campioni / ApiDemos / src / com / es / android / apis / view / List14.java per maggiori dettagli

I due risposte prima miniera sono corrette - è possibile utilizzare OnItemClickListener

.

E 'bene notare che la differenza tra OnItemClickListener e OnItemSelectedListener, mentre suono sottile, è in realtà significativa, come selezione delle voci e messa a fuoco sono correlati con la modalità touch del vostro AdapterView.

Per impostazione predefinita, in modalità touch, non c'è una selezione e messa a fuoco. Si può prendere un qui per ulteriori informazioni sull'argomento.

Questa soluzione è davvero minimalista e non rovinare il vostro codice.

list_item.xml di assegnare l'attributo Android (NON listView!): OnClick in questo modo:

<RelativeLayout android:onClick="onClickDoSomething">

e poi in questo metodo la chiamata di attività:

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

Devi usare setOnItemClickListener qualcuno ha detto.
Il codice dovrebbe essere simile a questo:

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();
    }
});

In primo luogo, la classe deve implementa il clic listenener:

implements OnItemClickListener

quindi impostare un ascoltatore alla ListView

yourList.setOnItemclickListener(this);

E, infine, creare il metodo 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();
}

si può prendere un codice di sguardo e scaricare qui

Usa setOnItemClickListener () api nella vostra attività. Di seguito è riportato il campione.

listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){

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

});

In Kotlin, aggiungere un ascoltatore al listView semplice come java

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

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

 }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top