2012-08-02 2 views
1

웹 사이트의 이미지를 갤러리로로드하려고합니다. 이미지가 갤러리에로드되지 않습니다. 첫 번째 (주) 이미지가로드됩니다.URL에서 갤러리로 이미지로드

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; 
    } 
} 

    } 

문제는 AddImgAdp 클래스의 getView()에있는 것 같습니다. 이것이 웹 사이트에서 이미지를로드하려고하는 올바른 장소인지 잘 모르겠습니다.

답변

1

먼저 모든 이미지를로드해야합니다. 기본적으로 당신이하고있는 것은 어댑터가로드 될 때, 당신은 모든 이미지를로드하려고 시도하는 것입니다. 이미지를 다운로드하는 비동기 작업을 만듭니다 (캐싱과 같은 작업에 익숙해 질 때까지 다른 arraylist로로드하는 것이 좋습니다). 그런 다음 어댑터를 설정할 때 찾고있는 이미지를 사용하도록 위치를 잡으십시오.

"imgView.setImageBitmap(imageArray.get(position))"; 
관련 문제