web-dev-qa-db-fra.com

Comment obtenir les éléments actuellement affichés dans AdapterView?

Comme dans le titre: je voudrais savoir comment obtenir la liste (tableau) de tous les éléments actuellement affichés dans mon AdapterView.
Pourquoi? Les objets affichés dans mon AdapterView nécessitent la libération d'un écouteur après que l'utilisateur ferme AdapterView. Je dois le faire pour optimiser mon application.
Ou y a-t-il une méthode (que je pourrais remplacer) qui est exécutée lors de la destruction des vues?

20
Krzysztof Miemiec

implémente OnScrollListener

public class NewsCategoryDC extends Activity implements OnScrollListener {

et définissez OnScrollListener dans listView

listView.setOnScrollListener(NewsCategoryDC.this);

et vous pouvez obtenir les première et dernière lignes visibles

@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
    firstVisibleRow = listView.getFirstVisiblePosition();
            lastVisibleRow = listView.getLastVisiblePosition();
/*Now you get the first and last visible rows, and you easily get the rows from first to last visible row and allocate resources to visible rows or deallocate resources to rows except visible rows..,.*/
}

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {}

ESSAYE ÇA..,.

et si une autre meilleure façon vous avez s'il vous plaît poster, c'est une question très utile et bonne ..,.

Merci..,.

ÉDITER............................

ajouter du code dans la méthode onScroll ()

@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
    int firstVisibleRow = listView.getFirstVisiblePosition();
    int lastVisibleRow = listView.getLastVisiblePosition();

    for(int i=firstVisibleRow;i<=lastVisibleRow;i++)
    {
        //Write your code here(allocation/deallocation/store in array etc.)
        System.out.println(i + "=" + listView.getItemAtPosition(i));
    }
}
29
MKB

Comme petit indice:

Si vous voulez obtenir tous les éléments entièrement visibles (-> attendez-vous à ceux qui sont en bas ou en haut et sont presque hors de l'écran), vous devriez regarder ce post:

Voir uniquement les éléments ListView entièrement visibles

6
Kooki