Wie man mit ListView klickt, klicke auf Android

Wie höre ich Klickereignisse in einem ListView?

Das habe ich jetzt

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

Wenn ich folgendes mache

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

Das scheint beim Klick nichts zu bewirken.
Und all diese Codes leben in einer class, die Aktivität erweitert.

   

Verwenden setOnItemClickListener Ihrer setOnItemClickListener

Angenommen, das ListView-Objekt ist lv, machen Sie Folgendes:

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

Sie müssen die aufgeblähte Ansicht “Clickable” und “in der Lage sein, Klickereignisse zu hören” in Ihrer Adapterklasse getView () -Methode einstellen.

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

und deklarieren Sie den Klick-Listener in Ihrer ListActivity wie folgt:

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

Dies gilt nur, wenn Sie den Adapter anpassen, indem Sie BaseAdapter erweitern.

Weitere Informationen finden Sie unter ANDROID_SDK / samples / ApiDemos / src / com / example / android / apis / view / List14.java

Die zwei Antworten vor mir sind korrekt – Sie können OnItemClickListener .

Es ist gut zu OnItemSelectedListener , dass der Unterschied zwischen OnItemClickListener und OnItemSelectedListener , obwohl er subtil klingt, tatsächlich von Bedeutung ist, da die AdapterView und der Fokus mit dem Touch-Modus Ihres AdapterView .

Standardmäßig gibt es im Touch-Modus keine Auswahl und keinen Fokus. Sie können hier nach weiteren Informationen zu dem Thema suchen.

Sie müssen setOnItemClickListener , sagte jemand.
Der Code sollte wie folgt aussehen:

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

Diese Lösung ist wirklich minimalistisch und verfälscht Ihren Code nicht.

Ordnen Sie in Ihrer liste_item.xml (NICHT listView!) Das Attribut android: onClick wie folgt zu :

  

und dann in Ihrer Aktivität rufen Sie diese Methode auf:

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

Zuerst muss die class den Klick-Listener implementieren:

 implements OnItemClickListener 

Setzen Sie dann einen Listener auf die ListView

 yourList.setOnItemclickListener(this); 

Und schließlich, erstellen Sie die Clic-Methode:

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

Sie können den Code hier ansehen und herunterladen

Verwenden Sie setOnItemClickListener () api in Ihrer Aktivität. Folgendes ist die Probe.

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