私はAndroidアプリケーションでリストビューを使用しています。このリストでは、リストアイテム(私の場合はビットマップイメージ)が動的に読み込まれます。実際、私はビットマップ画像を作成していて、それを1つずつリストにロードします。私が欲しいのは、すべてのリストアイテムをデフォルトの画像で表示し、ビットマップ画像が作成されたときにそれに応じて更新することです。私のコードを以下に示します。
public class BitmapDemoActivity extends Activity {
HorizontalListView listview;
Vector<Bitmap> thumbImg;
BitmapCreator creator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listviewdemo);
creator=new BitmapCreator();
thumbImg= new Vector<Bitmap>(97);
listview = (HorizontalListView)findViewById(R.id.listview);
listview.setAdapter(new BitmapAdapter());
new AsyncBitmapCreate().execute();
}
private class AsyncBitmapCreate extends AsyncTask<Void, Bitmap, Void>{
//Bitmap[] temp=new Bitmap[44];
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
for(int i=0;i<97;i++){
publishProgress(creator.generateBitmap(i+1));
}
return null;
}
@Override
protected void onProgressUpdate(Bitmap... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
new BitmapAdapter().add(values[0]);
new BitmapAdapter().notifyDataSetChanged();
}
}
class BitmapAdapter extends BaseAdapter{
public void add(Bitmap bitmap)
{
Log.w("My adapter","add");
thumbImg.add(bitmap);
}
@Override
public int getCount() {
return thumbImg.capacity();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
View retval = inflater.inflate(R.layout.listitem, null);
ImageView img = (ImageView) retval.findViewById(R.id.tImage);
img.setImageBitmap(thumbImg.get(position));
return retval;
}
};
}
ここでは、各ビットマップを作成した後、そのベクトルに挿入されるベクトルを使用しています。非同期タスクを使用してビットマップを作成しています。各ビットマップが作成された後、notifydatasetchanged()メソッドを呼び出してリストビューを更新しています。ただし、各ビットマップイメージが作成されるたびに出力で、そのイメージとともにリストビューに1つのアイテムが追加されます。ただし、私の要件は、リスト内の97個のアイテムすべてをデフォルトの画像で表示し、ビットマップが作成されるたびに対応するリストアイテムを更新することです。
誰かが私を助けることができますか?前もって感謝します....