2010-10-25 8 views
5

Ich entwickle eine Android-Anwendung.Identifizieren Sie das Objekt auf ListActivity-Methode onListItemClick

Ich habe mehrere Objekte auf einem ListActivity geladen. Ich möchte wissen, dass das Objekt auf Ereignis onListItemClick geklickt hat.

Ich sehe Methode onListItemClick hat einen Parameter namens id. Wie kann ich diese ID einrichten?

Meine Objekte werden durch eine ID identifiziert. Wie kann ich diese ID zu listItem hinzufügen?

Danke.

Antwort

7

Was ist die Quelle Ihrer Listendaten? Wenn Sie einen Cursor verwenden, wird die in onListItemClick(ListView l, View v, int position, long id) übergebene ID automatisch die ID der Cursorzeile sein.

+0

Ich verwende keinen Cursor. Ich verwende ein String-Array. – VansFannel

+0

Nehmen Sie dann an, dass das Array die ID in einem seiner Indizes enthält, und greifen Sie auf das Array unter Verwendung der Positionsvariablen zu. d. h. myArray [position] [0] (wenn Ihre ID @ index 0 des Arrays ist) – Dave

+0

Sehen Sie, was ich meine? Für die Quelldaten muss die Objekt-ID vorhanden sein, egal ob es sich um eine String [] oder ArrayList oder einen Cursor oder eine andere Quelle handelt. – Dave

2

Verwenden Sie Folgendes;

listView.getItemAtPosition(position); 

Dabei ist listView der Name Ihrer Listenansicht.

+0

Nein, ist es nicht für mich arbeiten. Zum Beispiel setze ich Objekt mit id = 1 auf Position 12. Ich möchte die Position nicht kennen, ich möchte die ID vom Objekt an einer bestimmten Position wissen. – VansFannel

8

Wenn SectionObj Ihr Objekt ist, auf das Sie später zugreifen möchten, legen Sie das im Adapter fest, wenn Sie die Quelle festlegen.

ArrayList<SectionObj> li 

ArrayAdapter<SectionObj> adapter=new ArrayAdapter<SectionObj>(getApplicationContext(),android.R.layout.simple_list_item_1, li); 
    setListAdapter(adapter); 

dann in ur-Listener-Methode ..

protected void onListItemClick(ListView l, View v, int position, long id) { 

SectionObj o=(SectionObj)getListView().getItemAtPosition(position); 

}

Verwandte Themen