Come trovare l'elemento all'interno di un GridView in Android?
-
12-11-2019 - |
Domanda
Ho una vista griglia che io popolare utilizzando un adattatore personalizzato. Durante la popolazione del GridView, do ogni elemento all'interno di un tag unico.
Una volta che questa GridView è popolata, desidero trovare un elemento specifico all'interno della GridView con il suo tag.Come lo trovo?
Attualmente sto facendo questo:
gridviewobject.findViewById(thetag);
// gridview object is the object of the gridview that i have populated.
. Soluzione
Quello che hai scritto sopra funzionerà, tranne che sii consapevole che a) ricerca di una vista per il suo tag è probabilmente il metodo più lento che potresti usare per trovare una vista e b) se si tenta di richiedere una vista con un tag e quelloLa vista non è attualmente visibile, riceverai null
.
Questo perché GridView
ricicla le sue opinioni, quindi essenzialmente ha sempre visualizzate abbastanza viste per adattarsi allo schermo, e quindi basta modificare le posizioni e il contenuto di questi mentre scorri.
forse un modo migliore potrebbe essere quello di fare
final int numVisibleChildren = gridView.getChildCount();
final int firstVisiblePosition = gridView.getFirstVisiblePosition();
for ( int i = 0; i < numVisibleChildren; i++ ) {
int positionOfView = firstVisiblePosition + i;
if (positionOfView == positionIamLookingFor) {
View view = gridView.getChildAt(i);
}
}
.
Essenzialmente findViewWithTag
fa qualcosa di simile, ma piuttosto che confrontare i numeri interi confronta i tag (che è più lento poiché sono oggetti e non interni)