gpt4 book ai didi

android - 如何使用 url 将图像下载到自定义 Base adapeter?

转载 作者:行者123 更新时间:2023-11-29 00:40:57 24 4
gpt4 key购买 nike

我正在使用 url 从后台进程获取图像。为了显示图像,我使用了 BaseAdapter 来显示列表中的所有图像。我已将 BaseAdapter 添加到我的 listView。

我可以使用 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);
}
}

}

从实现中我可以下载图像并且我可以在 ListView 中显示但是当我滚动时图像正在改变那些都没有修复。那些正在一次又一次地加载并且过度加载图像但不加载相关消息图像如果加载了一张图片,则它将永远不会再次加载。一段时间后,列表中只显示一张图片

如何一次性加载一张图片然后显示在列表中?请任何人帮助我

最佳答案

问题出在你的逻辑上。

您正在适配器的 getView 方法中执行下载图像任务,每次滚动列表时都会调用该方法。

因此,如果您的 Activity 是 ListActivity ,尝试在 onStart 方法中执行您的任务。那么这个issue就看不到了。

关于android - 如何使用 url 将图像下载到自定义 Base adapeter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9360299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com