Was ist der Unterschied zwischen "int" und "long" - argument in onItemClick in Android
Wenn wir implementieren OnItemClickListener
haben wir zu implementieren onItemClick
Methode ist eine abstrakte Methode in OnItemClickListener
- Schnittstelle. In onItemClick
- Methode gibt es vier Argumente.
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Toast.makeText(this, "Clicked on : " + arg2 + " long arg : " + arg3,
Toast.LENGTH_LONG).show();
}
Was ich wissen muss ist der Unterschied zwischen den letzten beiden Argumente (int arg2, long arg3
). Wie Sie sehen können in meinen code, wenn ich versuche zu Toast
es ich bekomme den gleichen Wert für beide Argumente.
- Ich muss es herausfinden, klar... link
InformationsquelleAutor AnujAroshA | 2011-11-22
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hatte ich die gleiche Frage wie du. Jedoch, hier die Antworten waren nicht sehr hilfreich. Ich nicht unterstützen, die go-look-it-up-yourself-Antworten, vor allem, wenn die so genannte Dokumentation ist also unklar. Ich schaue es mir, obwohl, und das folgende ist, was ich gefunden habe.
Den int Wert ist die position des Ansicht in der Eltern. Für eine
ListView
es ist die Nummer der Zeile. In der oberen Zeile ist die position 0, die zweite Zeile ist die position 1, die Dritte Zeile ist die position 2, usw. Beachten Sie, dass wenn IhrListView
hat eine header-Ansicht (wie wenn Sie nichtListView.addHeaderView(View)
), dann wird der header Ansicht wäre in der position 0 und die tatsächlichen Zeilen würde beginnen Ihre Nummerierung mit 1.Manchmal die lange Wert ist der gleiche wie der int position und manchmal ist es anders. Wenn Sie ein
ArrayAdapter
oderSimpleAdapter
dann sind Sie das gleiche (außer in dem Fall, dass es eine header-Ansicht und dann sind Sie um eins). Für eineCursorAdapter
(und in der Folge eineSimpleCursorAdapter
) die lange - id gibt die Zeilen-id der Tabelle, das heißt, dass_id
. Es ist ein lange eher als eine int, weil eine Datenbank könnte theoretisch mehr Zeilen als ein int halten konnte, in der Erwägung, dass eineListView
würde nicht.Hier sind ein paar andere Verwandte Antworten:
Lesen Sie die Dokumentation.
Den
int
ist die position der Ansicht, dielong
ist die item-ID.(Wir können nicht sehen, dass Sie den gleichen Wert für beide; wir haben nur den code sehen, nicht Ihren Bildschirm.)
Den gegebenen Antworten sind so hilfreich. Aber die erforderliche Antwort, ich meine die genaue Antwort, die ich wollte, war geschrieben als Kommentar für die Frage von selbst. Aber das wird nicht erhöhen mein "akzeptieren level". Also dachte ich, den link als Antwort für die Frage. Hier ist die link zur Antwort.
int Wert stellt position der Artikel, und lange Wert darstellt Element Id..
Meiner Meinung nach, durch die position, die Sie bekommen können Zeilen-Element mit adapter getItem(position).
So, die position bedeutet, dass die Daten-position in den adapter.
Für den id-parameter, ich denke, es ist eine Hilfe-Methode, wie Sie wissen, werden die Daten in-adapter ist immer ein Brenner. allgemein gesprochen, ein recorder sollte eine Spalte id(so etwas wie die Datenbank-id). bei der Codierung, können Sie das Element über position, dann bekommen Sie die Artikel-id(wenn das Element hat eine id). aber Sie können sich solche "id", die direkt mit der "id" - parameter.
Sie vielleicht bemerkt: die position "int" - Typ, während "id" ist "lange" - Typ.
Durch die Art und Weise, wenn Sie wollen, verwenden Sie die id-parameter, müssen Sie implementieren, die getItemId () - Methode in-adapter. die default-Implementierung in der ArrayAdapter ist nur wieder die position.