2012-09-01 2 views
0

sqlite 데이터베이스에서 그림 이름을 추출한 다음 그 그림 이름을 사용하여 드로어 블 폴더에서 특정 그림을 찾고 내 앱의 갤러리 위젯에 표시하여 그림을 표시하려고합니다. . 그것은 작동하지만 이제는 문제가 너무 많아서 드로어 블 폴더에 모든 것을 저장하는 것이 의미가 없으므로 앱을 너무 크게 만들 수 있습니다. 나는 그림을 온라인으로 배치하고 개별 URL을 sqlite 데이터베이스에 저장하려고 생각하고있다. 이 방법으로 데이터베이스에서 URL을 가져올 수 있으며 해당 URL을 사용하여 이미지를 다운로드하여 갤러리 위젯에 표시 할 수 있습니다. 나는 Lazy List (훌륭한 일에 대한 명성!)에 대해 읽었지 만, 내 앱에서 구현하는 데 문제가있다. 아래는 현재 갤러리에서 사용하고있는 코드이며 Lazy List를 사용하여 온라인에서 이미지를 다운로드하는 방법을 잘 모르겠습니다. 어떤 도움이라도 대단히 감사합니다! =)갤러리에서 게으른 목록 사용

protected String pic1, pic2, pic3; 
protected int Id, resID1, resID2, resID3; 

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.result_details); 
    Id = getIntent().getIntExtra("ID", 0); 
    SQLiteDatabase db = (new DatabaseHelper(this)).getWritableDatabase(); 
    Cursor cursor = db.rawQuery("SELECT pic1, pic2, pic3 FROM database WHERE _id = ?", 
      new String[]{""+Id}); 
    pic1 = cursor.getString(cursor.getColumnIndex("pic1")); 
    pic2 = cursor.getString(cursor.getColumnIndex("pic2")); 
    pic3 = cursor.getString(cursor.getColumnIndex("pic3")); 

    resID1 = getResources().getIdentifier(pic1 , "drawable", getPackageName()); 
resID2 = getResources().getIdentifier(pic2 , "drawable", getPackageName()); 
    resID3 = getResources().getIdentifier(pic3 , "drawable", getPackageName()); 

    Gallery g = (Gallery) findViewById(R.id.photobar); 
    g.setAdapter(new ImageAdapter(this)); 
} 
public class ImageAdapter extends BaseAdapter { 
     int mGalleryItemBackground; 
     private Context mContext; 

     private Integer[] mImageIds = { 
       resID1, 
       resID2, 
       resID3 
     }; 

     public ImageAdapter(Context c) { 
      mContext = c; 
      TypedArray a = obtainStyledAttributes(R.styleable.Theme); 
      mGalleryItemBackground = a.getResourceId(
      R.styleable.Theme_android_galleryItemBackground, 
         0); 
      a.recycle(); 
     } 

     public int getCount() { 
      return mImageIds.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 i = new ImageView(mContext); 

      i.setImageResource(mImageIds[position]); 
      i.setLayoutParams(new Gallery.LayoutParams(150, 100)); 
      i.setScaleType(ImageView.ScaleType.FIT_XY); 

      return i; 
     } 
    } 

답변

0

Lazylist 코딩에서 사용 ImageLoader() 및 전달 ImageView and Imageurl는 어댑터의 getView() 메소드에서이

imageLoader.DisplayImage(ImageUrl, imageview); 

같이하여 ImageLoader 을한다.

+0

죄송합니다. 프로그래밍에 익숙하지 않으므로 말씀하신 내용의 예를 들려 줄 수 있습니까? 따라서이 경우 public 뷰 getView (int 위치, 뷰 convertView, 뷰 그룹 부모)를 삽입합니다. { ImageView i = new ImageView (mContext); imageLoader.DisplayImage (pic1, i); i.setImageResource (mImageIds [position]); i.setLayoutParams (새 Gallery.LayoutParams (150, 100)); i.setScaleType (ImageView.ScaleType.FIT_XY); return i; } 그러나 mImageIds의 정수 배열은 어떻습니까? – maxchia

관련 문제