Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有assyncTask映像下载程序的Android适配器(回收器视图)_Android_Listview_Adapter - Fatal编程技术网

带有assyncTask映像下载程序的Android适配器(回收器视图)

带有assyncTask映像下载程序的Android适配器(回收器视图),android,listview,adapter,Android,Listview,Adapter,我使用带有循环视图(支架)的适配器。代码如下: @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAY

我使用带有循环视图(支架)的适配器。代码如下:

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

    ViewHolder holder;

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.playlists_item, null);

        holder          = new ViewHolder();

        holder.picture  = (ImageView)   convertView.findViewById(R.id.playlist_picture);
        holder.name     = (TextView)    convertView.findViewById(R.id.playlist_name);
        holder.desc     = (TextView)    convertView.findViewById(R.id.playlist_desc);
        holder.play_bt  = (ImageView)   convertView.findViewById(R.id.playlist_play);

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.picture.setImageResource(R.drawable.placeholder);

    ...

if(messages.get(position).containsKey("IMAGE"))
            {
                if(global.isInCache(messages.get(position).get("IMAGE")))
                    holder.picture.setImageBitmap(global.getBitmap(messages.get(position).get("IMAGE")));
                else{
                    holder.picture.setTag("http://**********" + messages.get(position).get("IMAGE"));
                    new loadImageTask().execute(holder.picture,cache,messages.get(position).get("IMAGE"),"********/upload/********/");
                }
            }
这是我的下载程序:

public class loadImageTask extends AsyncTask< Object , Void, Void>
{
    ...

    @Override
    protected void onPreExecute() {

    }

    @Override
    protected Void doInBackground(Object... params) {
        imagem = (ImageView) params[0];
        image_tag = (String)imagem.getTag();
        caminho = (String) params[3];
        name = (String) params[2];
        imgLoad = LoadImageFromWeb(caminho+name);

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {

        if (imgLoad instanceof BitmapDrawable) { 
            bitmap = ((BitmapDrawable)imgLoad).getBitmap();
        }

        bitmap = getResizedBitmap(bitmap, 100, 100);

        global.putCache(name, bitmap);

        imagem.setImageBitmap(bitmap);
    }
}
公共类loadImageTask扩展了AsyncTask
{
...
@凌驾
受保护的void onPreExecute(){
}
@凌驾
受保护的Void doInBackground(对象…参数){
imagem=(ImageView)参数[0];
image_标记=(字符串)imagem.getTag();
Camino=(字符串)参数[3];
名称=(字符串)参数[2];
imgLoad=LoadImageFromWeb(caminho+name);
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
如果(imgLoad instanceof BitmapDrawable){
位图=((BitmapDrawable)imgLoad.getBitmap();
}
位图=getResizedBitmap(位图,100100);
global.putCache(名称、位图);
设置图像位图(位图);
}
}
下载完成后,当我在
列表视图
中滚动时,
图像
被加载到我可见的位置(当滚动速度很快时,图像总是在每次下载完成时被更改)


我希望,如果您下载要完成的图像位置不再可见,则该图像未完成
setImageBitmap

请尝试毕加索或Glide library

     Picasso.get().load(url)
     .placeholder(R.drawable.iconname)
     .error(R.drawable.iconname)
      .into(/*your image view*/);

    Glide.with(context)
     .load("http://inthecheesefactory.com/uploads/source/glidepicasso/cover.jpg")
     .into(ivImg);

你最好试试这个:不要工作。。。问题是一样的。每次下载完成后,First position图像都会不断刷新。。。