/**
* 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;
}
}