2010-12-02 4 views
1

모두 누구나 갤러리 위젯과 함께 CursorAdapter를 사용 했습니까? 거기에 갤러리와 BaseAdapter (Array)를 데이터 저장소로 보여주는 많은 예제가 있습니다.커서 어댑터 및 Android 용 GalleryView

내 유스 케이스는 SQLite 커서에서 갤러리를 구동합니다. 커서에 표시 할 ImageURL이 있습니다.

다른 ListView에서 DroidFu의 ImageLoader (ImageView 포함)를 사용하여 이미지를 비동기로 다운로드했습니다.

그러나 이것은 갤러리와 함께 작동하지 않는 것 같습니다. 그것은 (갤러리) 그걸 다시 처리기를 게시하지 않습니다.

이렇게 ... URL 기반 이미지의 AsyncDownload가 포함 된 갤러리 및 커서 어댑터 패턴에 대한 의견이 있으십니까?

감사

답변

2

네,하지만 내가 (스레드 메모리/파일 캐싱 및 없음 스레드 이미지 로딩) DroidFu 매우 유사 이미지 로더, 내 자신의 구현을 사용했다. 그리고 갤러리 + 커서 어댑터 설정으로 스레드로 이미지를로드 할 수없는 것처럼 보입니다. 그렇지 않으면 하나의 연속적인 부드러운 스크롤 대신 매우 고르지 못한 스크롤이 발생합니다.

다음은 샘플 코드입니다. 목록, 갤러리 및 그리드보기에 동일한 커서 어댑터를 사용합니다.

public class CatalogCursorAdapter extends CursorAdapter { 

private Context context = null; 
private HLBitmapManager iMan; 
private CatalogViewHolder holder; 
private final LayoutInflater inflater; 
private int layout; 

public CatalogCursorAdapter(Context context, Cursor c, int layout) 
{ 
    super(context, c, true); 
    inflater = LayoutInflater.from(context); 
    this.layout = layout; 
    this.context = context; 
    iMan = new HLBitmapManager(context.getCacheDir()); 
} 

@Override 
public View newView(Context context, Cursor cursor, ViewGroup parent) { 
    final View view = inflater.inflate(layout, parent, false); 
      return view; 
} 

@Override 
public void bindView(View v, Context context, Cursor c) { 

    String brandName = c.getString(c.getColumnIndex("display_name")); 
    String category = c.getString(c.getColumnIndex("display_price")); 
    String imgUrl = c.getString(c.getColumnIndex("img_url")); 

    holder = (CatalogViewHolder) v.getTag(); 
    if(holder == null) { 
     holder = new CatalogViewHolder(v); 
     v.setTag(holder); 
    } 

    Bitmap image; 
    switch (this.layout) { 
    case R.layout.catalog_list_row: 
     holder.title.setText(brandName); 
     holder.sub_title.setText(category); 
     iMan.fetchBitmapOnThread(imgUrl, Constants.EVENT_LISTVIEW_IMG_WIDTH, Constants.EVENT_LISTVIEW_IMG_HEIGHT, holder.icon); 
     break; 
    case R.layout.catalog_grid_cell: 
     iMan.fetchBitmapOnThread(imgUrl, Constants.EVENT_LISTVIEW_IMG_WIDTH, Constants.EVENT_LISTVIEW_IMG_HEIGHT, holder.icon); 
     break; 
    case R.layout.catalog_slide_cell: 
     image = iMan.fetchBitmap(imgUrl, Constants.EVENT_LISTVIEW_IMG_WIDTH, Constants.EVENT_LISTVIEW_IMG_HEIGHT); 
     holder.icon.setImageBitmap(image); 
     break; 
    } 
    holder.icon.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 

} 
} 
+0

당신은 "HLBitmapManager" – pengwang

+0

HLBitmapManager 이미지 다운 로더의 내 자신의 구현입니다 걸 알 수 있습니다. 이미지 캐시를 다운로드하고 관리하는 데 도움이되는 정보로 대체 할 수 있습니다. –