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.
.

È stato utile?

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)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top