2011-10-20 3 views
4

J'essaie de rechercher à travers les questions pour voir s'il n'y a aucun fil similaire à mon problème, mais jusqu'à présent, je n'en ai trouvé aucun. Voici mon problème est: J'ai une liste de produits qui contient ~ 10 000 éléments stockés dans une base de données SQLite. Dans mon application, je dois rechercher un élément de cette liste. J'ai quelques options:sélectionner un élément d'une liste de 10 000 éléments dans android

  • Les autoCompleteTextView, avec tous les produits pré-chargés, et que je tape le nom du produit, la liste suggérerai le produit, donc j'ai juste besoin de choisir parmi la suggestion. C'est le moyen le plus simple mais je pense que 10 000 articles (ou plus à l'avenir) seraient très lourds à charger
  • Comme je tape n'importe quel caractère et cliquez sur Rechercher, l'application fera un select tous les produits de la DB avec le personnage comme un filtre. Le jeu de résultats est ensuite transmis à une vue de liste afin que je puisse choisir n'importe quel élément. Cette approche permettrait d'économiser la mémoire car l'application ne chargera pas tous les éléments dans la mémoire, mais seulement les éléments qui contiennent les caractères de filtrage.

Y a-t-il une meilleure façon de le faire? Merci

Répondre

4

Votre deuxième option est la meilleure façon. Son semblable à la façon dont vous obtenez une liste de résultats de recherche recommandés pendant que vous tapez votre requête. Pour vous, en supposant que vous utilisez asynctask pour interroger votre db, vous pouvez avoir un message de chargement approprié signalé par onProgressUpdate

+0

Merci pour votre réponse. Vous voulez dire quelque chose de similaire à google recherche instantanée? Si tel est le cas, la requête est faite à chaque instant que je tape un caractère, n'est-ce pas? –

+0

et btw, je suis tout à fait nouveau à android, alors pourriez-vous en dire plus sur "Pour vous, en supposant que vous utilisez asynctask pour interroger votre db vous pouvez avoir un message de chargement approprié signalé par onProgressUpdate" tks –

+1

android ASyncTask devrait être votre meilleur ami. Les documents sur le site de google sont très clairs et fournissent un exemple. C'est la meilleure façon de gérer plusieurs threads dans Android, et fournit un mécanisme pour signaler la progression sur le thread d'arrière-plan. La requête serait faite dès que quelqu'un tape une lettre, mais toujours avec asynctask il ne sera pas bog l'application vers le bas. – jfisk

0

Pouvez-vous classer les éléments? Pour que vous puissiez utiliser spinner pour sélectionner la catégorie, utilisez AutoCompleteTextView pour taper et sélectionner des éléments.

+0

Malheureusement tous les articles appartiennent à la même catégorie: | –

Questions connexes