Was bedeutet AdapterView > Bedeutet in der OnitemClick () Methode? Was ist die Verwendung anderer Parameter in ihm?
-
02-10-2019 - |
Frage
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
Lösung
Die <?>
zeigt eine generische. Lesen Sie mehr über sie hier .
Hier ist, was die Dokumentation sagt über die Parameter:
onItemClick(AdapterView<?> parent, View view, int position, long id)
Eltern Die AdapterView wo der Klick passiert ist.
Die Ansicht im AdapterView, die angeklickt wurde (dies wird eine Ansicht vom Adapter zur Verfügung gestellt werden)
Position Die Position der Ansicht in dem Adapter.
id Die Zeilen-ID des Elements, das geklickt wurde.
Die AdapterView
könnten ein ListView
sein, GridView
, Spinner
usw. Die Fragezeichen in den spitzen Klammern zeigen an, dass es eine von ihnen sein könnte. Dies nennt man Generika in Java. Sie können Eltern im Code etwas auf die ganze Sicht zu tun. Zum Beispiel, wenn Sie eine ListView
wurden mit Ihnen könnte die ganze ListView
durch die folgende Codezeile auszublenden:
parent.setVisibility(View.GONE);
Die View
bezieht sich auf ein bestimmtes Element innerhalb der AdapterView
. In einer ListView
ist es die Folge. So können Sie einen Verweis auf einen TextView
innerhalb einer Reihe erhalten, indem in etwa so sagen:
TextView myTextView = (TextView) view.findViewById(R.id.textView1);
String text = myTextView.getText().toString();
Die Position ist die Position der Ansicht in den Eltern . Für eine ListView
ist es die Zeilennummer. Die obere Reihe ist die Position 0, die zweite Zeile der Position 1 ist die dritte Zeile Position 2 usw. Beachten Sie, dass, wenn Ihre ListView
hat eine Kopfansicht (wie wenn Sie ListView.addHeaderView(View)
tun), dann würde die Kopfsicht Position 0 sein und die tatsächliche Zeilen würden ihre Nummerierung bei 1 beginnen.
Manchmal id ist die gleiche wie Position und manchmal ist es anders. Wenn Sie eine ArrayAdapter
oder SimpleAdapter
verwenden, dann sind sie gleich (außer im Fall, dass es eine Kopfansicht ist und dann nach dem anderen ausgeschaltet sind). Für eine CursorAdapter
(und folglich ein SimpleCursorAdapter
) die id gibt die Zeilennummer der Tabelle, das heißt, _id
.
Hier sind ein paar andere gute Antworten zu diesem Thema:
Andere Tipps
? bedeutet, dass der Datentyp ist nicht bekannt, und es kann jede Art sein.