2010-11-16 4 views
1

J'ai une galerie qui a 7 + linéaire dispositions dans chaque vue, et j'ai mis l'arrière-plan drawable pour 7 de ces dispositions dynamiquement, en fonction des données que je tire de db, la position de la galerie, etc.setBackgroundDrawable sur plusieurs éléments ne fonctionne pas correctement

J'ai une boucle for qui lance 7 threads pour récupérer des données et récupérer les informations nécessaires pour générer les drawables, qui retourne par l'intermédiaire d'un gestionnaire commun, qui récupère à son tour chacune des dispositions linéaires et exécute setBackgroundDrawable() sur chacun d'eux.

Le problème que je rencontre est que je peux voir mes constructeurs pour le drawable étant exécuté 7 fois, mais draw() est seulement appelé sur 1 ou 2 d'entre eux. Si je défile à droite ou à gauche, la même chose arrive avec la nouvelle vue. Cependant, si je retourne à l'écran déjà dessiné, les 7 plans linéaires ont leurs arrière-plans dessinés correctement.

J'ai essayé d'appeler invalidate() et requestLayout() sur les mises en page linéaires, leurs parents, la galerie, mais en vain.

Je posterais mon code mais il y en a toute une masse, et je croise les doigts pour que mon explication fournisse suffisamment d'arrière-plan. J'apprécie toute aide

Répondre

0

La solution que je suis venu avec était de compter le nombre de threads que je les ai lancés, et une fois que le dernier est revenu, appelez invalidate() sur la mise en page parente. J'avais essayé d'appeler invalidate() chaque fois que l'un d'entre eux revenait, mais il semble que dans l'ensemble, les choses se passaient trop rapidement.

Questions connexes