2010-12-02 3 views
1

すべて 誰かがGalleryウィジェットでCursorAdapterを使用しましたか?そこには、ギャラリーとBaseAdapter(配列)をそのデータストアとして示す多くの例があります。Android上のカーソルアダプタとGalleryView

私のユースケースは、SQLiteカーソルからギャラリーを駆動しています。カーソルにはImageURLが表示されます。

他のListViewでDroidFuのImageLoader(ImageViewを使用)を使用して、画像を非同期にダウンロードしています。

しかし、これはギャラリーでは機能していないようです。それ(ギャラリー)はそれに戻ってくるハンドラを好きではありません。

So ... URLベースの画像のAsyncDownloadを使用したギャラリーとカーソルのアダプターパターンの考え方はありますか?

おかげ

答えて

2

はい、しかし、私は(インメモリ/ファイルキャッシュと、ネジ付きとなしスレッド画像読み込み)DroidFuと非常によく似た画像ローダー、私の独自の実装を使用していました。そして、あなたはGallery + Cursor Adapterの設定でスレッドで画像を読み込むことができないかのように見えます。そうしないと、スムーズな1回のスクロールではなく、非常に途切れたスクロールが発生します。

ここではサンプルコードを示します。リスト、ギャラリー、およびグリッドビューに同じカーソルアダプタを使用します。

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は、画像ダウンローダの私自身の実装されているものを私に伝えることができます。イメージキャッシュをダウンロードして管理するのに役立つ情報で置き換えることができます。 –

関連する問題