8
votes

ListView inversé à Android?

Y a-t-il un moyen facile d'afficher une liste de liste dans l'ordre inverse? J'essaie de créer une application basée sur la conversation et j'aimerais que les entrées les plus récentes soient au bas de la liste de liste. Je suis au courant de TranscriptMode et de StackFrombottom, mais mon problème est l'ordre des données.

Dites que j'ai 100 articles de conversation et souhaitez afficher les éléments 80-100, avec 100 étant l'élément de conversation le plus récent. J'aimerais montrer 80-100, ce qui implique une ordonnance de la limite de descente 20 dans ma requête, ce qui oblige les articles à trier 100 à 80, le contraire de ce dont j'ai besoin. J'ai actuellement un code de requête intérieure désagréable, mais vous vous sentez comme une solution plus simple basée sur l'inverser le curseur ou simplement l'inversion de la liste de liste.


1 commentaires

Je ne sais pas si cela fonctionnerait mais vous pouvez simplement interroger pour tous les articles, créer un tableau des 20 derniers du curseur renvoyé, puis créez un matrixcursor de la matrice et Utilisez cela pour le listview . Voir développeur.android.com/reference/android/database/...


4 Réponses :


10
votes

à l'intérieur de la baseeaderapter , pour la greview () méthode, au lieu d'obtenir l'élément dans les données Dans l'index "Position", utilisez l'opposé, Signification: NumberOfitems moins la position.

En ce qui concerne l'affichage du nombre d'éléments, c'est aussi à l'intérieur de la baseEaDapter: définissez la valeur renvoyée par getcount () pour être celui que vous souhaiterez que ce soit (20 dans votre exemple, bien que 80- 100 implique qu'il devrait être 21).

BTW, il semble que vous êtes un démarreur dans le cas de la liste de réception. Puis-je suggérer de regarder cette vidéo: http://www.youtube.com/watch?v=WDBM6WVEO70

Vérifiez également les API-Demos fournies par le gestionnaire SDK. ils ont beaucoup d'exemples là-bas.


1 commentaires

Merci, je pense que c'est la meilleure façon d'aller. J'avais tenu compte de la curseur de sous-classement pour créer un réverveur et envisager également de modifier la liste de liste, mais la pièce entre eux est le choix clair. Je venais de regarder les performances d'Android de Romain 2009 sur les performances Android qui ont laissé entendre dans cette direction, grâce au pointeur de la discussion de listeView.



0
votes

requête pour les enregistrements utilisant entre le mot clé semble être la solution la plus facile à moi.


1 commentaires

Merci, entre est utile mais ne fonctionne pas bien pour moi, car je ne veux pas ajouter une requête pour trouver où se trouve le dernier morceau de données.



10
votes

Utilisez cette méthode getItem à l'intérieur de votre adaptateur pour ordre inverse: xxx


2 commentaires

Pourriez-vous s'il vous plaît expliquer comment remplacer la méthode getItem () dans l'adaptateur?


Mais cela montre un message que @override n'est pas autorisé ici. J'essaie de remplacer l'intérieur de la méthode oncreate



1
votes

Ce code est travaillé pour moi lorsque vous tirez des données de la base de données.

cs.moveToPosition(super.getCount() - position - 1); //cs is Cursor


0 commentaires