我通过使用url从后台进程获取图像。要显示图像,我使用了BaseAdapter来显示list.l中的所有图像。我已将BaseAdapter添加到我的listView。我如何能使用网址下载图像到定制基adapeter?
我能够通过使用AsyncTask类的背景下载图像,这个类可以返回位图图像。
我已经实现MyCustome适配器类如下。
public class CustomeAdapter extends BaseAdapter {
private static ArrayList<Message> searchArrayList;
private LayoutInflater mInflater;
public CustomeAdapter(Context context, ArrayList<Message> results) {
searchArrayList = results;
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return searchArrayList.size();
}
public Object getItem(int position) {
return searchArrayList.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list, null);
holder = new ViewHolder();
holder.personName = (TextView) convertView.findViewById(R.id.usrName);
holder.message = (TextView) convertView.findViewById(R.id.msgText);
holder.imgPerson = (ImageView) convertView.findViewById(R.id.personImg);
holder.msgImg = (ImageView) convertView.findViewById(R.id.msgImg);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.personName.setText(searchArrayList.get(position).getShoutUserFirstName());
holder.message.setText(searchArrayList.get(position).getShoutMessageText());
holder.msgImg.setImageResource(R.drawable.smile);
try{
new DownloadImageTask(holder.imgPerson).execute("http://www.bwappstore.com/WebApps/ShoutImage/Image.ashx?UserID="+searchArrayList.get(position).getShoutUserID());
}
catch (RejectedExecutionException e) {
e.printStackTrace();
}
return convertView;
}
static class ViewHolder {
TextView personName;
TextView message;
ImageView imgPerson;
ImageView msgImg;
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
Bitmap bm = null;
try {
URL aURL = new URL(urls[0]);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
}
catch (IOException e) {
Log.e("", "Error getting bitmap", e);
}
return bm;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
}
从实现我可以下载的图片,我可以在列表视图中显示,但图像被改变,当我滚动这些都是不fixing.those被一而再,再而过载加载图像,但不加载相关的消息图像 如果一个图像再装它永远不会加载again.after一段时间只有一个图像列表
显示我怎么可以加载一个图像一次,然后在列表中显示? 请任何机构帮我
这里是实现一个简单的演示[**的Android - ListView中的图像延迟加载**](http://stackoverflow.com/a/3068012/379693) – 2012-02-20 11:25:26
是否有其他替代方式来获得? – 2012-02-20 11:47:57
懒列表柠很难实现 – 2012-02-20 11:48:25