WEBVTT

00:00.020 --> 00:01.460
Nello sviluppo di Android.

00:01.460 --> 00:08.080
Il pattern Viewholder viene utilizzato insieme ad adattatori come il base adapter o il Recyclerview dot adapter

00:08.150 --> 00:14.030
per ottimizzare le prestazioni e l'efficienza della visualizzazione di elenchi o griglie di dati.

00:14.060 --> 00:21.320
Aiuta a migliorare le prestazioni di scorrimento degli elenchi, riutilizzando le viste e riducendo al minimo la necessità di gonfiare e trovare

00:21.320 --> 00:24.020
ripetutamente le viste per ogni elemento.

00:24.020 --> 00:30.770
In questo video, quindi, parleremo del pattern Viewholder e di come funziona all'interno di un adattatore di base.

00:30.770 --> 00:38.240
Quando si creano le viste per gli elementi di una vista elenco, ad esempio, utilizzando il metodo Get View dell'adattatore,

00:38.240 --> 00:45.680
in genere si utilizza il metodo find view by ID per trovare le singole viste all'interno di ogni layout di elemento.

00:45.710 --> 00:52.760
Tuttavia, questo processo può richiedere molto tempo, soprattutto se l'elenco contiene un gran numero di elementi.

00:52.760 --> 00:59.060
Ad esempio, in questo elenco abbiamo quattro voci, ma che dire di 100 voci o di 1000 voci?

00:59.060 --> 01:04.660
Quindi dobbiamo scrivere 1000 volte, per trovare una vista in base all'ID, e questo non è un buon approccio.

01:04.680 --> 01:08.130
La soluzione è utilizzare il modello Viewholder.

01:08.310 --> 01:16.650
Il modello Viewholder mira a risolvere questa inefficienza riciclando e riutilizzando le visualizzazioni già gonfiate.

01:16.650 --> 01:22.290
Iniziamo a capire come funziona questo modello, il modello viewholder.

01:22.290 --> 01:30.810
Prima di tutto, dobbiamo creare una classe Viewholder, che è una classe statica all'interno di questa classe adattatore personalizzata.

01:30.810 --> 01:38.370
Si tratta quindi di una classe interna, una classe statica interna all'adattatore che contiene i riferimenti alle viste all'interno di

01:38.370 --> 01:39.660
un layout di elementi.

01:39.660 --> 01:43.590
Lo scopo di questa classe è quello di memorizzare questi riferimenti.

01:43.590 --> 01:50.040
Una volta trovate le viste, si utilizza la funzione Trova vista per ID, in modo da poterle riutilizzare.

01:50.040 --> 01:53.100
Quando si legano i dati alle viste.

01:53.100 --> 01:59.370
Torniamo all'elemento Il mio elenco, che è un layout personalizzato degli elementi.

01:59.370 --> 02:06.300
Abbiamo solo una vista di testo, quindi dichiarerò questa vista di testo in questa classe.

02:06.300 --> 02:09.990
TextView Visualizzazione del testo Alt+ Invio.

02:09.990 --> 02:10.950
Ed eccoci qui.

02:10.950 --> 02:14.910
Se si hanno due viste di testo, è necessario creare due viste di testo.

02:14.910 --> 02:24.150
Passiamo alla vista get e iniziamo a creare il riferimento per il supporto della vista della classe Viewholder.

02:24.540 --> 02:26.160
Lo chiamerò "hold".

02:26.160 --> 02:31.590
Quindi il primo passo è creare i riferimenti alle viste all'interno di un layout di elementi.

02:31.590 --> 02:35.460
Il secondo passo consiste nel creare un'istanza del view holder.

02:35.490 --> 02:41.310
Il terzo passo consiste nell'iniziare ad associare l'origine dati alle viste.

02:41.340 --> 02:45.360
Se convertire la vista uguale a null.

02:45.360 --> 02:52.740
E si può vedere che questa è la vista convertire in vista quando si crea una nuova vista per un elemento,

02:52.740 --> 03:01.290
gonfiandola dal layout XML, oppure quando si ricicla una vista che ha uno schermo scrollato, si può controllare se il

03:01.290 --> 03:04.530
parametro convertire la vista non è nullo.

03:04.560 --> 03:11.550
Se non è nullo, significa che si può riutilizzare questa vista invece di gonfiarla e si vuole.

03:11.580 --> 03:19.320
Quindi la conversione in vista è una vista riciclata che si può riutilizzare per migliorare le prestazioni dei componenti dell'interfaccia utente

03:19.320 --> 03:23.640
basati su elenchi, come le viste elenco, le viste griglia e la vista riciclatore.

03:23.640 --> 03:25.590
In questo caso, la nostra vista elenco.

03:25.590 --> 03:32.160
Si pensi quindi a un parametro di vista convertito che rappresenta una di queste viste riciclate.

03:32.160 --> 03:40.410
Quando si scorre un elenco, le visualizzazioni che escono dallo schermo vengono riciclate in modo da poter essere riutilizzate

03:40.410 --> 03:43.740
per i nuovi elementi che arrivano sullo schermo.

03:43.740 --> 03:47.970
Il parametro della vista convertita rappresenta una di queste viste riciclate.

03:47.970 --> 03:53.760
Quindi, se non è nullo, se è riciclato, userò questo altro qui.

03:53.760 --> 04:01.140
Impostiamo Holder, che è la classe Holder della vista e la inizializziamo come view holder,

04:01.140 --> 04:05.130
la fondiamo e convertiamo il tag view dot get.

04:05.130 --> 04:13.320
Lo scopo principale dell'uso del metodo get tag nel metodo get view è quello di recuperare un oggetto Viewholder precedentemente

04:13.320 --> 04:14.820
associato.

04:14.820 --> 04:20.880
Il pattern view holder viene utilizzato per ottimizzare il riciclo delle viste e migliorare le prestazioni dei componenti dell'interfaccia utente

04:20.910 --> 04:21.870
basati su elenchi.

04:21.870 --> 04:28.530
A tale scopo, utilizziamo il tag get per associarlo all'oggetto titolare.

04:28.530 --> 04:37.170
Quindi, quando la vista convertita è nulla, si gonfia una nuova vista e questo codice, altrimenti, se non è nulla, si

04:37.170 --> 04:43.860
usa la vista, migliorando le prestazioni perché si gonfiano le viste quando necessario.

04:43.860 --> 04:54.390
Utilizzerò convert view equal to layout inflator dot from context dot inflate.

04:54.390 --> 04:59.910
Passerò a una nuova linea o a un nuovo layout di punti.

05:00.120 --> 05:00.960
Voce in elenco.

05:00.990 --> 05:05.010
Il secondo parametro è il genitore, che è un gruppo di visualizzazione.

05:05.010 --> 05:09.000
Il terzo parametro è false, che è collegato alla radice.

05:09.000 --> 05:12.930
Ma cos'è il gonfiatore di layout e perché lo usiamo?
