2011-03-22 4 views
1

Je sais qu'il est en quelque sorte possible de faire un ListView qui charge plus de données lorsque l'utilisateur a atteint le bas de la liste. Cependant, je travaille avec un ScrollView, dans lequel j'ai un LinearLayout, et ces deux composants fonctionnent parfaitement avec le scrolling. Mais je ne sais pas comment je suis censé faire, donc ça obtient un parchemin infini. Je suppose que j'ai besoin d'ajouter quelque chose qui lit ce qui est affiché de LinearLayout sur l'écran, et quand il calcule que c'est le bas du LinearLayout qui est montré (en utilisant la position actuelle et la hauteur du View), il déclenche un événement.
Mais comme je l'ai dit, je ne sais pas comment accomplir cela. Donc, si quelqu'un peut me donner de l'aide, je serais très reconnaissant.Défilement infini dans LinearLayout/ScrollView?

EDIT: J'ai trouvé ce post ici sur StackOverflow How to trigger an event when scrollView reach the bottom with Android?, mais je ne sais pas quoi faire avec la réponse:

Compte tenu des exigences, vous serez probablement étendez BaseAdapter (par opposition à CursorAdapter qui utilise un mécanisme différent).

Voici un extrait pour que:

public View getView(int position, View convertView, ViewGroup parent) { 
    if (position == backingLinkedList.size()) { 
     //get more items and add them to the backingLinkedList in a background thread 
     notifyDataSetChanged(); 
    } 
} 

Répondre

0

Si vous pouvez déclencher un événement lorsque vous atteignez le fond d'un scrollview, vous pouvez essayer de créer votre propre type de vue pour stocker vos données. Lorsque vous atteignez le bas de la vue, chargez les données suivantes dans votre classe de vue et ajoutez-les dans la disposition de la vue déroulante.

Donc, fondamentalement, créez une classe qui contient une section de ce que vous montrez. Ajouter le premier dans le scrollview. Lorsque vous atteignez le bas, créez une autre vue en conservant vos prochaines données et utilisez scrollviews_layout.addview(view_holding_the_new_data)

0

Je sais que cela a été résolu il y a longtemps, mais je voulais partager ma solution pour les futurs scrollers infinis.

I utilisé la méthode onScroll au sein du OnScrollListener pour déclencher un fil de fond pour attraper plus de données et de notifier à l'adapter.notifyDataSetChangedListView de plus de données à charger et à créer un rouleau infini. Pour une raison quelconque, onScrollStateChanged ne se déclenche pas, mais onScroll a fait ce dont j'avais besoin, donc je n'avais pas besoin de déranger. Pendant longtemps, je n'ai pas compris comment empêcher le ListView de recharger et de me remettre en haut de la liste, mais j'ai alors réalisé que j'avais seulement besoin d'initialiser un nouvel adaptateur et d'appeler setListAdapter une fois, et tous les temps après cela, appelez seulement notifyDataSetChanged. Avant, j'appelais aussi setListAdapter, me plaçant ainsi au sommet.

Questions connexes