带有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
下载完成后,当我在列表视图
中滚动时,图像
被加载到我可见的位置(当滚动速度很快时,图像总是在每次下载完成时被更改)
我希望,如果您下载要完成的图像位置不再可见,则该图像未完成
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图像都会不断刷新。。。