2012-08-02 1 views
1

J'essaie de charger des images d'un site Web dans une galerie. Les images ne parviennent pas à charger dans la galerie. La première image (principale) est chargée.Chargement des images de l'URL dans la galerie

public class viewimages extends Activity { 

private Gallery gallery; 
private ImageView imgView; 

private Integer[] Imgid = { 
     R.drawable.a_1, R.drawable.a_2, R.drawable.a_3, R.drawable.a_4 
}; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.viewimages); 
    try { 
    URL url = new URL("http://www.mysite.com/images/1000298/pics/1.jpg"); 

     Bitmap bmp = BitmapFactory.decodeStream(url.openConnection() 
          .getInputStream()); 
     imgView = (ImageView)findViewById(R.id.ImageView01);  
     imgView.setImageBitmap(bmp); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 



    gallery = (Gallery) findViewById(R.id.examplegallery); 
    gallery.setAdapter(new AddImgAdp(this)); 

    gallery.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView parent, View v, int position, long id) { 
      imgView.setImageResource(Imgid[position]); 
     } 
    }); 


} 

public class AddImgAdp extends BaseAdapter { 
    int GalItemBg; 
    private Context cont; 

    public AddImgAdp(Context c) { 
     cont = c; 

     TypedArray typArray = obtainStyledAttributes(R.styleable.GalleryTheme); 
     GalItemBg = typArray.getResourceId(R.styleable.GalleryTheme_android_galleryItemBackground, 0); 
     typArray.recycle(); 
    } 

    public int getCount() { 
     return Imgid.length; 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imgView = new ImageView(cont); 
     List<String> imageNames = new ArrayList<String>(); 
     imageNames.add("1.jpg"); 
     imageNames.add("2.jpg"); 
     //etc. until you've added all images 

     for (int i = 0; i < imageNames.size(); i++){ 
      URL url; 
      try { 
       url = new URL("http://www.mysite.com/images/1000298/pics/" + imageNames.get(i)); 
       Bitmap bmp = BitmapFactory.decodeStream(url.openConnection() 
         .getInputStream()); 
       imgView.setImageBitmap(bmp); 
       imgView.setLayoutParams(new Gallery.LayoutParams(80, 70)); 
       imgView.setScaleType(ImageView.ScaleType.FIT_XY); 
       imgView.setBackgroundResource(GalItemBg); 
      } catch (MalformedURLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     } 



     return imgView; 
    } 
} 

    } 

Le problème semble être dans getView() dans la classe AddImgAdp. Je ne suis pas sûr si c'est l'endroit approprié pour essayer de charger les images d'un site Web?

Répondre

1

Vous devez d'abord charger toutes les images. Fondamentalement, ce que vous faites est quand l'adaptateur se charge, vous êtes en boucle, en essayant de charger toutes les images. Créez une tâche asynchrone qui télécharge vos images (je vous recommande de les charger dans une autre liste jusqu'à ce que vous soyez plus à l'aise avec des choses comme la mise en cache). Ensuite, lorsque vous définissez l'adaptateur, saisissez la position pour utiliser l'image que vous recherchez. Par ex,

"imgView.setImageBitmap(imageArray.get(position))";