2011-04-02 1 views
0

J'ai une activité qui a deux onglets et une vue de liste dans chacun. Je veux faire le chargement et l'ouverture des activités très rapidement. Je crains que le fait de remplir les deux onglets de liste entraînera un retard de l'application lorsque cette activité s'ouvrira. Je pense au chargement des données de ma base de données pendant l'écran de démarrage de mon application et à la création d'un tableau de vues, puis je les jette simplement sur les listes de lecture une fois que l'acivité est lancée. Est-ce que cela en vaut la peine? Je n'arrive pas à trouver un moyen simple de faire quelque chose comme ça. Je suppose que j'aurai besoin d'adaptateurs de tableau personnalisés. Est-ce que quelqu'un a une expérience de faire quelque chose comme ça? Ou recommanderiez-vous simplement de respecter la norme d'utilisation d'un adaptateur de curseur dans onCreate()?pré-créer des vues de lignes avant de créer une activité listview?

Répondre

0

La question de savoir pourquoi vous devez les charger rapidement. En général, les éléments peuvent être lus à partir d'une base de données très rapidement. Vous devez néanmoins le faire dans un AsyncTask afin de ne pas bloquer le thread d'interface utilisateur avec cette opération. Un autre point est, si vous voulez afficher des articles d'une base de données dans un ListView vous ne devriez pas lire tout l'article immédiatement et les mettre dans un tableau que vous liez à la liste. Au lieu de cela, vous devez utiliser le curseur que vous avez obtenu de la requête de base de données et le lier à un SimpleCursorAdapter ou CursorAdapter que vous liez ensuite à ListView. Les CursorAdapters sont optimisés pour lire les données d'un Cursor quand elles sont nécessaires. Rappelez-vous que la création d'objets est une opération coûteuse sur Android qui devrait être évitée si elle n'est pas nécessaire. Donc, si vos listes sont très grandes et que l'utilisateur ne fait pas correctement défiler la liste entière, pourquoi pré-charger tous les éléments et créer des vues pour cela?

Vous pouvez bien sûr demander la base de données au cours de l'écran de démarrage et stocker les curseurs retournés jusqu'à ce que vous en ayez besoin.

Mais comme je l'ai dit au début, je ne sais pas ce que votre application fait, il est donc difficile de dire si cela en vaut la peine ou non.

+0

Merci pour la réponse. Je me concentrais sur l'optimisation avant de vraiment comprendre le fonctionnement des adaptateurs de listes. Il est logique d'utiliser la méthode que vous avez décrite. La façon dont je l'ai maintenant charge des curseurs organisés par ordre alphabétique pendant un écran de démarrage en utilisant une tâche asynchrone. Je mets le reste en utilisant un simple echange de curseurs. Merci! –

Questions connexes