web-dev-qa-db-fra.com

Créer dynamiquement des images dans une boucle

J'ai écrit ce code qui charge une image dans le widget ImageView:

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gallery);
    i = (ImageView)findViewById(R.id.imageView1);

    new get_image("https://www.google.com/images/srpr/logo4w.png") {
        ImageView imageView1 = new ImageView(GalleryActivity.this);

        ProgressDialog dialog = ProgressDialog.show(GalleryActivity.this, "", "Loading. Please wait...", true);

        protected void onPreExecute(){
             super.onPreExecute();
        }

         protected void onPostExecute(Boolean result) {
             i.setImageBitmap(bitmap); 
         dialog.dismiss();
         }
    }.execute();


}

bu maintenant, je veux charger plusieurs images. pour cela, j'ai besoin de créer des images dynamiquement mais je ne sais pas comment ...

Je veux exécuter mon code dans une boucle for:

for(int i;i<range;i++){
   //LOAD SEVERAL IMAGES. READ URL FROM AN ARRAY
}

mon problème principal est de créer plusieurs ImageViews dans une boucle de manière dynamique

10
Fcoder

vous pouvez modifier la mise en page, la ressource image et le nombre d'images (éventuellement dynamiques) en fonction de vos besoins ...

LinearLayout layout = (LinearLayout)findViewById(R.id.imageLayout);
for(int i=0;i<10;i++)
{
    ImageView image = new ImageView(this);
    image.setLayoutParams(new Android.view.ViewGroup.LayoutParams(80,60));
    image.setMaxHeight(20);
    image.setMaxWidth(20);

    // Adds the view to the layout
    layout.addView(image);
}

Vous pouvez utiliser ce code pour créer ImageViews

ImageView image = new ImageView(this);
LinearLayout.LayoutParams vp = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
image.setLayoutParams(vp);
image.setMaxHeight(50);
image.setMaxWidth(50);
// other image settings
image.setImageDrawable(drawable);
theLayout.addView(image);

où theLayout est la mise en page à laquelle vous souhaitez ajouter vos vues d'image.

Pour plus de personnalisation, consultez la page dev , où sont répertoriées toutes les options possibles. 

1
Ahmed Aeon Axan

Essaye ça

 rootLayout = (LinearLayout) view1.findViewById(R.id.linearLayout1);

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    params.gravity = Gravity.CENTER_VERTICAL;

    params.setMargins(0, 0, 60, 0);


    for(int x=0;x<2;x++) {
        ImageView image = new ImageView(getActivity());

        image.setBackgroundResource(R.drawable.ic_swimming);
        rootLayout.addView(image);
    }
0
Thasreef Mogral

Si votre besoin est affiché dans List ou Gridview, alors vous devriez choisir Liste de chargement ou grille.

Veuillez passer par le lien ci-dessous.

https://github.com/thest1/LazyList

https://github.com/abscondment/lazy-gallery

0
Amit Gupta