关于图片浏览中listview adapter的有关问题

关于图片浏览中listview adapter的问题。
因为之前做的listview界面滑动非常卡,所以我对getview()里最耗时的操作作了异步处理,结果滑动卡的问题解决了,现在新的问题是每个Item的缩略图显示错位,滑动屏幕,停下来时同一屏幕下的item竟然显示一样的缩略图。。。。求大大帮忙解决。
贴代码:
public class ListViewAdapter extends BaseAdapter{
private Context context;
List<HashMap<String,Object>> folderinfo;
GetBitmap getbitmap;
private BitmapAsyncTask mBitmapAsyncTask;
private Bitmap path =null;
private String imagepath;
int width;

public ListViewAdapter(Context cont,List<HashMap<String,Object>> info,int w,boolean mediafag){
context=cont;
folderinfo=info;
width=w;
getbitmap=new GetBitmap(context,mediafag);
}

public int getCount() {
return folderinfo.size();
}

public Object getItem(int position) {
return folderinfo.get(position);
}

public long getItemId(int position) {
return position;
}

public View getView(int position, View convertView, ViewGroup parent) { 

ViewHolder holder;
holder = new ViewHolder();
if (convertView == null ) { 
convertView = LayoutInflater.from(context).inflate( R.layout.listviewview, null); 
holder.mediaimage = (ImageView)convertView.findViewById(R.id.listviewimage); 
holder.nameANDnumber = (TextView)convertView.findViewById(R.id.listviewfold); 
holder.foldpath = (TextView)convertView.findViewById(R.id.listviewpath); 
RelativeLayout.LayoutParams frameParams = (RelativeLayout.LayoutParams)holder.mediaimage.getLayoutParams();
frameParams.height=width/5-1; 
frameParams.width=width/5+1; 
holder.mediaimage.setLayoutParams(frameParams);

                convertView.setTag(holder); 
            } 
            else { 
             holder = (ViewHolder)convertView.getTag(); 
            };
     /*获取目标缩略图及其信息并将之放入view中的操作极为耗时*/
        imagepath = (String)folderinfo.get(position).get("path");
        mBitmapAsyncTask = new BitmapAsyncTask();
        mBitmapAsyncTask.execute(imagepath);
        
     holder.mediaimage.setImageBitmap(path);
     holder.nameANDnumber.setText(
     new File((String)folderinfo.get(position).get("path")).getName()+
     "("+folderinfo.get(position).get("number")+")");
     holder.foldpath.setText((String)folderinfo.get(position).get("path"));
        
return convertView;
}

static class ViewHolder{
ImageView mediaimage;
TextView nameANDnumber;
TextView foldpath;
}

private class BitmapAsyncTask extends AsyncTask<String,Void,Bitmap> {

@Override
protected void onPreExecute() {
super.onPreExecute();
}

@Override
protected Bitmap doInBackground(String... params) {
path= getbitmap.GetImagefoldTitmap(imagepath);//最耗时的操作,异步处理是解决流畅性的关键
return path;
}

}
------解决思路----------------------
如果你对这个流程不熟悉, 使用用  第三方控件 ImageLoader 。

研究其中原理 可以看他们的源代码。
------解决思路----------------------
google为我们提供了一个标准的图片缓冲机制的 volley,你可以看看这个,能够实现图片的动态加载
------解决思路----------------------
holder.mediaimage.setImageBitmap(path);这个地方的path是个不确定的Bitmap,而且是个全局对象,这样做不对,因为这个值在异步任务完成时复制,异步任务不一定按照你需要的顺序执行,这里从逻辑上将就有问题了。AsyncTask可以传递一个对象过去,将ImageView传递过去(如果传递的比较多可以封装成一个Object传递),在onPostExecute(Result)中调用ImageView.setImageBitmap(Bitmap),可以解决图片重复和错位的问题,但图片过多可能就会出现OOM了,推荐使用一些优秀的开源库比如六楼说的universal image loader for android  地址 https://github.com/nostra13/Android-Universal-Image-Loader  
------解决思路----------------------
你好,看到你的问题我就想到了我的问题,我也是呗同样的问题困扰过,最后解决办法就是用框架:ImageLoade,不但能解决图片错位问题,还能有效解决oom内存溢出异常。有问题可以在回复我。