Come gestire ListView clic in Android
-
20-09-2019 - |
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à.
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()
}