Questa è più simile a una domanda generica, ma dopo molte ricerche e tentativi non riesco a capire perché sia così difficile da raggiungere. This è la risposta più vicina che riesca a trovare ma che ancora non riesco a implementare.Come far scorrere RecyclerView senza problemi?
Per essere precisi sto utilizzando RecyclerView con GridLayoutManager. Tutto quello che voglio è che il layout della griglia scorra senza problemi (come l'app gallary di default), niente di particolare, ma l'implementazione di default del gestore della griglia fa scorrere la vista in modo 'a scatti'. Ho provato a implementare il metodo dal link sopra ma senza successo.
Ho anche provato a implementare LinearSmoothScroller ma non sono sicuro di come implementare il metodo computeScrollVectorForPosition. Google's documentation su computeScrollVectorForPosition ha letteralmente 0 parole.
Ho trovato this 3 part tutorial, ma era di pochissimo aiuto. Quindi, tutto quello che voglio chiedere è: può esserci qualche tipo di codice template che possiamo implementare in LinearSmoothScroller o estendere RecyclerView.SmoothScroller e ottenere uno scrolling regolare? Anche se il codice dipende dal numero di oggetti e articoli per riga in griglia, ci deve essere un metodo per farlo facilmente. Mi sto perdendo qualcosa qui?
- forse dovresti determinare perché il tuo codice esistente è "a scatti", usando strumenti come Traceview, 'StrictMode', e così via. – CommonsWare
@commonsWare Quindi, l'implementazione predefinita di GridLayoutManager dovrebbe scorrere la griglia senza problemi? Mi dispiace se suono noob, sono abbastanza nuovo per Android Programming. – rockfight
"Quindi intendi l'implementazione di default di GridLayoutManager dovrebbe scorrere la griglia senza problemi?" - Sì, almeno per la mia definizione di "senza problemi". La tipica fonte di scorrimento "a scatti" in Android è che l'app impiega troppo tempo nel thread dell'applicazione principale aggiornando l'interfaccia utente. Nel caso di 'RecyclerView', ciò significherebbe impiegare troppo tempo in' onBindViewHolder() 'o possibilmente in' onCreateViewHolder() '. Ognuno di questi ha bisogno di tornare in tempi inferiori al millisecondo, il che significa che non è possibile eseguire I/O su disco o I/O di rete. – CommonsWare