Android(安卓)解决异步任务下载图片错位问题
/**
* 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;}@Overridepublic int getCount() { int count = 0; if(datas!=null) count = datas.size(); return count;}@Overridepublic Object getItem(int position) { return datas.get(position);}@Overridepublic long getItemId(int position) { return position;}@Overridepublic 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;}
}
更多相关文章
- Android(安卓)RecyclerView使用 及 滑动时加载图片优化方案
- Android(安卓)Layout的可视化编辑器Droiddaw
- 当ScrollView嵌套RecyclerView 或者EditText的时候,进去页面总会
- android获取网络图片
- android 读书笔记 1
- android 日期控件对话框
- Android本地图片上传(拍照+相册)
- Android(安卓)高效加载大图片避免OOM
- Android(安卓)开发 设置banner圆角,滑动时,图片圆角失效