2012-03-27 6 views
14

Je cherche à implémenter gridview style pinterest (voir image) et j'ai du mal à trouver une approche.Pinterest style listview ou gridview en android

La vue doit avoir 3 colonnes (comme pinterest) avec des images individuelles ayant une largeur constante mais une hauteur variable. Cela devrait être défilable. Je suis également préoccupé par la question de pouvoir recycler les vues que le nombre d'images peut être beaucoup (disons 1000)

Je ne suis pas sûr de la façon d'aborder cette vue dans android.

Gaurav

Pinterest View

Répondre

3

je le ferais de cette façon:

ScrollView 
    LinearLayout (horizontal) 
    LinearLayout (vertical, layout weight for width) 
     [All the content in column 1] 
    LinearLayout (vertical, layout weight for width) 
     [All the content in column 2] 
    LinearLayout (vertical, layout weight for width) 
     [All the content in column 3] 

Utilisez le chargement paresseux pour les photos s'il y a des milliers

+4

chargement paresseux des images n'est pas le problème. Je suis plus préoccupé par le recyclage des images insérées dans les trois présentations linéaires. – rOrlig

+1

J'ai essayé cette approche avec un chargement paresseux et il ne fonctionne pas bien probablement en raison du non-recyclage des vues d'image. – rOrlig

+1

Hmm. Je suppose que si vous chargez autant d'images, vous pouvez supprimer les vues au début et ajouter d'autres vues à la fin du défilement. – AJcodez

5

Je ne pensais pas à ce sujet jusqu'à ce que vous avez apporté vers le haut, mais c'est un problème intéressant pour essayer une solution. Ma suggestion serait d'intégrer 3 ListView dans l'activité ou le fragment. Je suppose que chacun recycle son propre View respectivement. Cela résout votre performance assez facilement en supposant qu'il est sûr de le faire. Alors peut-être un LinearLayout horizontal qui contient les 3 ListViews. L'ajout d'un rembourrage au milieu produirait l'effet désiré.

Bien sûr, il faut réfléchir davantage à la façon dont les images finiront où elles sont, mais c'est à vous de les imaginer :) J'espère que cela vous donnera quelques idées!

+0

J'aime la suggestion. Je vais essayer ça. – rOrlig