アプリ作って海外移住

コピペプログラマーのメモ

非同期処理 gridview listview

gridview サムネイル画像表示で、

Asynctaskloader 訳わからない。そこで、

getview内で・・・

if(データクラスにサムネイル画像のbitmapがない?){

    if(スクロール中?){画像表示しない}

 if(スクロールしてない?){contentresorverでサムネイル取得 表示 データクラスに格納}}

if(データクラスにサムネイル画像のbitmapがある?){

   データクラスセット取得 表示}

 

Bitmap bmp = null;
if(book.get8() ==null){

// new ImageDownloadTask(iv1,bmp, book.get5()+"",position).execute();
if (mBusy == false) { //false スクロールしてない trueスクロール中
ContentResolver cr = getContentResolver();
bmp = MediaStore.Images.Thumbnails.getThumbnail(
cr, book.get7(), MediaStore.Images.Thumbnails.MICRO_KIND, null);
book.set8(bmp);
Log.v(" スクロールしてない","position="+position);
iv1.setImageBitmap( bmp);
}else{
iv1.setImageResource(R.drawable.ic_launcher);
Log.v(" スクロール中","position="+position);
}

}else{
bmp = book.get8();
iv1.setImageBitmap( bmp);
}

 

 

 

 

 

 

 

 

 

スクロールリスナーをつくって

スクロール中  何もしない。

スクロールしてない アダプタ更新 GridViewの再描画

 

これでOK!! かなりすごいと思う!!!

 

 

 

// スクロールのリスナーを設定
gv.setOnScrollListener(new OnScrollListener() {

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
// スクロールしていない
if( scrollState == OnScrollListener.SCROLL_STATE_IDLE){
mBusy =false;
// アダプターにデータ変更の通知
adapter.notifyDataSetChanged();
// GridViewの再描画
gv.invalidateViews();
}
// スクロール中
if( scrollState == OnScrollListener.SCROLL_STATE_TOUCH_SCROLL){
mBusy = true;
}
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
Log.e("GridView","firstVisibleItem"+firstVisibleItem+"\nLastVisibleItem"+totalItemCount);



}
}
);