Domanda

Quando viene visualizzato un elenco e scorrere intorno, ListAdapter.GetView () () Crea una nuova vista elemento dell'elenco o riattivare una vista esistente passata ad esso (come "ConvertView) per visualizzare nuovi contenuti.

Mi sto chiedendo, se c'è un modo per ottenere tutte le visualizzazioni create da GetView ()?Per esempio.Se le viste dell'elenco delle voci devono liberare qualche risorsa quando l'attività viene distrutta, sarebbe bello passare attraverso tutte le viste degli articoli di elenco e dire loro di rilasciare la risorsa.

È stato utile?

Soluzione

beh, è non come semplice come interating attraverso il ListView utilizzando ListView#getChildAt(int): il ListView è una sottoclasse AbsListView - e AbsListView implementa il RecycleBin utilizzato per contenere Viewsriutilizzato.

Prima che un View sia inserito nel RecycleBin è distaccato dal suo genitore (la visualizzazione elenco) utilizzando ViewGroup#detachViewFromParent(View), rendendolo così accessibile utilizzando getChildAt(int).

Cosa dovresti implementare è l'interfaccia RecyclerListener che ti avviserà quando un View viene spostato in RecycleBin.

Altri suggerimenti

Poiché ListView è un ViewGroup, dovresti essere in grado di iterare sulle viste sui bambini come questa:

for (int i=0; i < myListView.getChildCount(); i++) {
    View v = myListView.getChildAt(i);

    //Check to see if this view has the resource, then release it
}
.

Qualcosa di simile era necessario in questa domanda: Android: Accedi alle viste per bambini da AListiew

È Java.Non è possibile ordinare l'applicazione o l'istanza di essere realmente distrutta in modo da liberare le risorse.Con finalizzare () puoi aumentare la probabilità che la macchina Java lo farà.

A meno che il tuo adattatore non venga utilizzato al di fuori di questa attività (nel qual caso, non sai davvero che non hai più bisogno di queste opinioni giuste?), il tuo unico riferimento / i a questo adattatore è all'interno dell'attività.Ciò significa che se la tua attività è la spazzatura raccolta il tuo adattatore sarà raccolto spazzatura, il che significa che le tue opinioni saranno raccolte.Non mi preoccuperei di cercare di ottimizzare questo a meno che tu non abbia un problema misurabile con questo comportamento.

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