Cosa AdapterView > Significa in OnitemClick () metodo? Qual è l'uso di altri parametri in esso?
-
02-10-2019 - |
Domanda
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
Soluzione
Il <?>
indica un generico. Per saperne di più su di loro qui .
Ecco cosa dice il documentazione sui parametri:
onItemClick(AdapterView<?> parent, View view, int position, long id)
genitori L'AdapterView dove il clic è successo.
Visualizza La vista all'interno della AdapterView che è stato cliccato (questo sarà un visualizzazione fornita dalla scheda)
posizione La posizione della vista l'adattatore.
id La riga id dell'elemento che è stato cliccato.
Il AdapterView
potrebbe essere un ListView
, GridView
, Spinner
, ecc Il punto interrogativo all'interno delle parentesi angolari indicano che potrebbe essere uno qualsiasi di loro. Questo si chiama generici in Java. È possibile utilizzare genitori nel codice per fare qualcosa per tutta la visione. Ad esempio, se si stesse utilizzando un ListView
si potrebbe nascondere l'intera ListView
dalla seguente riga di codice:
parent.setVisibility(View.GONE);
Il View
si riferisce a un elemento specifico all'interno del AdapterView
. In un ListView
è la riga. Così, è possibile ottenere un riferimento a un TextView
all'interno di una riga per dire qualcosa di simile:
TextView myTextView = (TextView) view.findViewById(R.id.textView1);
String text = myTextView.getText().toString();
Il posizione è la posizione del Visualizza nella genitori . Per un ListView
, è il numero di riga. La riga superiore è la posizione 0, la seconda fila è la posizione 1, la terza fila è la posizione 2, ecc Si noti che se il vostro ListView
ha una vista di testa (come se l'avete fatto ListView.addHeaderView(View)
) poi la vista di testa sarebbe la posizione 0 e l'effettivo righe avrebbero iniziare la loro numerazione a 1.
A volte id è lo stesso di posizione e, a volte è diverso. Se si utilizza un ArrayAdapter
o SimpleAdapter
allora sono gli stessi (tranne nel caso in cui v'è una vista intestazione e poi sono off). Per un CursorAdapter
(e quindi una SimpleCursorAdapter
) il id restituisce l'id riga della tabella, che è, _id
.
Qui ci sono alcune altre risposte buone su questo argomento:
Altri suggerimenti
L'? significa che il tipo di dati è sconosciuto e che può essere di qualsiasi tipo.