我在我的 android 应用程序中使用列表视图,其中列表项(在我的情况下是位图图像)是动态加载的。实际上我正在创建位图图像,然后将其一一加载到列表中。我想要的是用一些默认图像显示所有列表项,并在创建位图图像时相应地更新它们。我的代码如下,
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() 方法来更新列表视图。但是现在在输出中,每当创建每个位图图像时,它都会在列表视图中添加一个带有该图像的项目。但我的要求是用一些默认图像显示列表中的所有 97 个项目,并且每当创建位图时更新相应的列表项。
谁能帮我??提前致谢....