Android 解决异步任务下载图片错位问题

解决加载网络图片错位问题 解决加载网络图片错位问题,很好的demo 立即下载

/**
* Description: 解决图片错位问题

  • Copyright (c) , 2016, Jansonxu
  • This program is protected by copyright laws.
  • Program Name:Person.java
  • Date: 2016年3月5日
  • @author 李阳
  • @version : 1.0
    */

    //核心步骤
    //① 解决图片错位问题原理无非就是,布局的每一个ImageView 控件
    // 设置一个唯一标签(通常采用url作为标签),图片下载完成后,
    // 根据url 获取控件,将图片设置给这个控件 方法一般写在doPostAc
    // tivity 中 ,采用接口回调可以写在调用异步任务的类中

// a) ImageView.setTag(url);
// b)ImageView = relativeLayout.findViewById(R.id.img_id);
// c) imageView.setImageBitmap(bitmap);

package com.example.adapter;

import java.util.List;

import com.example.cbk1.R;
import com.example.asynctask.DownTask;
import com.example.entity.CbkData;

import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CbkDataAdapter extends BaseAdapter {

private Context context;
private List<CbkData> datas;

public CbkDataAdapter(Context context, List<CbkData> datas) {
    super();
    this.context = context;
    this.datas = datas;
}

@Override
public int getCount() {
    int count = 0;
    if(datas!=null)
        count = datas.size();
    return count;
}

@Override
public Object getItem(int position) {
    return datas.get(position);
}

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

@Override
public View getView(int position, View convertView, final ViewGroup parent) {
    if(convertView==null){
        convertView = LayoutInflater.from(context).inflate(R.layout.item_cbk, parent, false);
        ViewHolder holder = new ViewHolder();
        holder.imageView = (ImageView) convertView.findViewById(R.id.imageView);
        holder.text_title = (TextView) convertView.findViewById(R.id.text_title);
        holder.text_info = (TextView) convertView.findViewById(R.id.text_info);

        convertView.setTag(holder);
    }

    final ViewHolder holder = (ViewHolder) convertView.getTag();

    //当前要显示的数据
    CbkData cbkData = datas.get(position);
    String title = cbkData.getTitle();
    String source = cbkData.getSource();
    String create_time = cbkData.getCreate_time();
    String nickname = cbkData.getNickname();

    holder.text_title.setText(title);
    holder.text_info.setText(source+" "+nickname+" "+create_time);

    //获取图片路径
    String imageUrl = cbkData.getWap_thumb();
    holder.imageView.setTag(imageUrl);//解决图片错位的问题

    if(imageUrl.length()<=0)//判断图片路径的长度
        //隐藏ImageView
        holder.imageView.setVisibility(View.GONE);
    else
    {
        holder.imageView.setVisibility(View.VISIBLE);
        holder.imageView.setImageResource(R.drawable.ic_launcher);

        //使用异步任务下载图片
        new DownTask(DownTask.TYPE_IMAGE,new DownTask.DownBack() {
            @Override
            public void response(String url,Object obj) {
                //根据图片的url从ListView对象中查找ImageView
                ImageView imageView = (ImageView) parent.findViewWithTag(url);
                if(imageView!=null)
                    imageView.setImageBitmap((Bitmap)obj);
            }
        }).execute(imageUrl);

    }
    return convertView;
}

class ViewHolder
{
    ImageView imageView;
    TextView text_title,text_info;
}

}

Androidstudio写的异步加载下载网络图片 自己写的androidstudio写的一个异步加载实现网络下载图片 立即下载

相关推荐

Android编程实现只显示图片一部分的方法

主要介绍了Android编程实现只显示图片一部分的方法,涉及Android针对图片的局部显示操作技巧,需要的朋友可以参考下

Android图片保存到相册失败

Android之图片保存的一些坑 生成图片的路径: // 该目录下得文件不会被相册扫描到,所以不要用这个 String rootDir = context.getExternalFilesDir(null).getAbsolutePath(); // 虽然已过时但用这个 String rootDir = Environment.getExternalStorageDirectory().getAbsolutePath(); 6.0之后不仅需要在Manifest文件里声明一下,还要在保存前需要动态申

cy的博客 2129

全网最详细 解决戴维南定理的详细推导

替代定理,戴维南定理详细证明

m0_52555753的博客 3万+

android 一些图片加载库的使用感悟

在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片。在这里我主要介绍一下我自己在使用Volley, Picasso, Universal-Imageloader的一些使用的感悟。以及最基本的用法介绍。 1.Volley 给ImageView设置图片源 [code="java"] // imageView是一个I...

{丸の子} 201

cadence capture CIS 之添加数据库

2021-08-20 cadence capture CIS 之添加数据库准备一、添加数据源 准备 1、数据库文件(*.mdb) 2、电脑上安装好 cadence 软件 一、添加数据源 打开“ ODBC数据源管理器” ( 路径:C:\Windows\SysWOW64\odbcad32.exe ) ...

weixin_42256550的博客 6056

STM32 Modbus-RTU从零到实战:手把手教你用HAL库实现工业通信(附完整代码)

本文详细介绍了如何使用STM32 HAL库从零开始实现Modbus-RTU从机通信。内容涵盖RS485硬件设计、CubeMX串口与定时器配置、基于空闲中断的高效数据接收、协议栈状态机设计、CRC16校验实现以及常用功能码处理。文章提供了完整的代码框架和调试方法,帮助开发者快速构建稳定的工业通信节点。

weixin_28278377的博客 191

android中ListView异步加载图片时的图片错位问题解决方案

其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。然而Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。贵在坚持!《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

2401_84010457的博客 1019

zblog mysql数据库无法连接_ZBlog博客网站错误:MySQL数据库无法连接

前言前天搭建的博客网站,睡醒一觉起来网站挂逼了,其间无任何操作。主页都进不去,提示“MySQL数据库无法连接”,无论怎么刷新重启服务器都没用。最终从中午1点搞到凌晨2点,皇天不负有心人终于解决了。其实问题很简单,只是没这方面的经验,走了很多弯路。我本人并不是搞WEB的,搞这个博客纯碎就是玩玩罢了。处理这个问题的时候查了很久的资料,都是一些没太大意义的,无非就是让你改zb_user/c_option...

weixin_34691461的博客 2205

网络加载图片时显示错位的解决方法

1.图片错位产生原因: 使用listview或者recycleview时,这两个空间内部的复用机制,再加上异步获取图片。会导致图片显示错位。 图片加载是异步任务,通过网络,访问服务器并拿到图片资源的时间是不定的,并且这个任务不在主线程中执行。 在异步访问网络的过程中,listview或者recycleview可能已经滑动,原先的convertview被复用,且被复用的convertv

>眺望未来- 5286

【模型构建器教程】教你在ArcGIS中如何按照字段值批量导出shp文件

【模型构建器教程】教你在ArcGIS中如何按照字段值批量导出shp文件

weixin_45469245的博客 6457

基于Simulink的无线充电系统LCC补偿网络建模与控制

本文详细介绍了基于Simulink的无线充电系统LCC补偿网络建模与控制方法。首先分析了LCC补偿网络的恒流输出、软开关实现和抗偏移能力等优势,并对比了不同补偿拓扑特性。随后分步骤讲解了Simulink建模流程,包括LCC主电路构建、关键参数设计、双闭环控制系统实现等核心环节。重点阐述了移相控制策略和软开关验证方法,提供了系统效率计算和抗偏移测试的调试技巧。最后展示了仿真结果,在耦合系数变化20%时,闭环系统仍能保持输出电压稳定在±2%波动范围内。文章还探讨了工程扩展方向,并针对常见问题给出了解决方案,为无

xiaoheshang_123的博客 540

Picasso实战:如何优雅解决RecyclerView图片错位与下载取消?PicassoDrawable避坑指南

Picasso 是一款强大的 Android 图片下载与缓存库(A powerful image downloading and caching library for Android)。在开发瀑布流、相册、消息列表时,**RecyclerView 图片错位**(滑到 B 位置却显示了 A 的图片)和**下载任务取消不彻底**(内存泄漏、流量浪费)是两个高频痛点。本文将从 [PicassoDraw

gitblog_00957的博客 815

C#实现鼠标点击任意绝对位置(附完整源码)

C#实现鼠标点击任意绝对位置(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 483

Android ListView 异步加载图片错位的问题

请参考: http://www.cnblogs.com/lesliefang/p/3619223.html http://blog.youkuaiyun.com/guolin_blog/article/details/45586553 http://blog.youkuaiyun.com/zhangtao19931104/article/details/52739598 1.原因?

sui_yz的博客 233

zynq的irq_f2p 如何增加或修改中断引脚个数(宽度)

ZYNQ开发过程中,如果使用PL到PS的中断,会产生一个疑问,设置界面显示可以有[91:84]、[68:61]共16个中断引脚,但是并没有设置中断口的宽度,如果使用多个中断引脚,应该怎么办?如果通过concat连接多个引脚,则自动调整为对应的引脚数。例如连接3个中断信号,则自动调整为:IRQ_F2P[2:0]

FPGA艺术家的博客 837

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

上一篇: 多线程下载之断点续传采用随机文件读取流,HttpConnection实现
下一篇: Android 自定义适配器逐步优化
一朵红杏
博客等级 码龄12年 51粉丝 282原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值