Android GridView
è piuttosto interessante, riutilizza le visualizzazioni secondarie. Quelli che scorrono verso l'alto ritorna dal basso. Quindi non esiste alcun metodo da GridView
per ottenere la vista figlio dalla sua posizione. Ma ho davvero bisogno di vedere la sua posizione e di lavorarci sopra. Quindi, per fare ciò, ho creato un SparseArray
e ho inserito le visualizzazioni in base alla loro posizione in esso da getView
di BaseAdapter
.GridView visualizza per posizione, prima vista figlio diversa
SparseArray<View> ViewArray = new SparseArray<View>();
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null)
view = li.inflate(layoutID, null);
ViewArray.put(position, view);
}
Ora, posso ottenere tutte le viste visibili dalla loro posizione. Tutto funziona perfettamente come dovrebbe, ma in alcuni dispositivi, la prima vista figlio (posizione 0) non è la stessa di quella dell'array. Ho registrato il getView
e ho trovato che per la posizione 0, getView
è stato chiamato più volte e ogni volta l'array è stato impostato con una vista diversa. Non ho idea del perché GridView stia chiamando getView
per la posizione 0 molte volte e ciò accade solo su pochi dispositivi. Qualche soluzione?