it-swarm.com.de

Wie man mit ListView umgeht, klicke in Android

Wie höre ich ein Klickereignis in einer ListView?

Das habe ich jetzt

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

Wenn ich das Folgende 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 Klicken nichts zu bewirken.
Und all dieser Code befindet sich in einer Klasse, die Activity erweitert.

139
teepusink

Verwenden Sie in Ihrer Listenansicht setOnItemClickListener

180
David Hedlund

Angenommen, das ListView-Objekt ist lv.

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

Sie müssen die aufgeblasene Ansicht in Ihrer Methode getView () der Adapterklasse auf "Anklickbar" und "Klickereignisse abhören können" einstellen.

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

und deklarieren Sie den Klicklistener 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 in der Datei Android_SDK/samples/ApiDemos/src/com/example/Android/apis/view/List14.Java

42
Vijay C

Die zwei Antworten vor mir sind richtig - Sie können OnItemClickListener verwenden.

Es ist gut zu bemerken, dass der Unterschied zwischen OnItemClickListener und OnItemSelectedListener, obwohl er subtil klingt, tatsächlich bedeutend ist, da die Auswahl und der Fokus von Objekten mit dem Berührungsmodus Ihres AdapterView zusammenhängen. .

Standardmäßig gibt es im Touch-Modus keine Auswahl und keinen Fokus. Sie können einen Blick auf hier werfen, um weitere Informationen zu diesem Thema zu erhalten.

17

Diese Lösung ist wirklich minimalistisch und bringt Ihren Code nicht durcheinander.

Weisen Sie in Ihrer list_item.xml (NICHT listView!) Das Attribut Android: onClick wie folgt zu:

<RelativeLayout Android:onClick="onClickDoSomething">

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

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

Sie müssen setOnItemClickListener verwenden, sagte jemand.
Der Code sollte so 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();
    }
});
6
Shudy

Zunächst muss die Klasse den Klicklistener implementieren:

implements OnItemClickListener

Setzen Sie dann einen Listener auf die ListView

yourList.setOnItemclickListener(this);

Und zum Schluss 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 einen Blick darauf werfen und den Code herunterladen hier

5

Verwenden Sie in Ihrer Aktivität die API setOnItemClickListener (). Es folgt das Beispiel.

listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){

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

});
3
Amey Haldankar

Fügen Sie in Kotlin einen Listener zu Ihrer listView hinzu, der so einfach wie Java ist

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

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

 }
0
Allen