gpt4 book ai didi

向上和向下滚动时 ListView 中的android-ImageView不显示图像

转载 作者:行者123 更新时间:2023-11-29 20:28:08 25 4
gpt4 key购买 nike

我通过 universalImageDownloader 从 Internet 获取图像,并使用 ViewHolder 来显示它们:

public class ListAdapter2 extends BaseAdapter {
Activity activity;
public ArrayList<HashMap<String, String>> list;

public ListAdapter2(Activity activity, ArrayList<HashMap<String, String>> list) {
super();
this.activity = getActivity();
this.list = list;
}

public HashMap<String, String> geting(int position) {
return list.get(position);
}

public void addAll(ArrayList<HashMap<String, String>> result) {
if (this.list == null) {
this.list = result;
} else {
this.list.addAll(result);
}
notifyDataSetChanged();
}

public int getCount() {
return list.size();
}

public Object getItem(int position) {
return list.get(position);
}

public long getItemId(int arg0) {
return 0;
}

private class ViewHolder {
ImageView img;
}

public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
LayoutInflater inflater = activity.getLayoutInflater();
if (convertView == null) {
convertView = inflater.inflate(R.layout.row_grids, null);
holder = new ViewHolder();
holder.img = (ImageView) convertView.findViewById(R.id.image);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}

item = list.get(position);

if(item.get("img").length()>0)
imageLoader.displayImage("http://website.com/img/" + item.get("img"), holder.img, options,
imageListener);
else
holder.img.setImageDrawable(getResources().getDrawable(R.drawable.fix));
}

return convertView;
}

public void clear() {
if (this.list.size() > 0)
this.list.clear();
}
}

private static class ImageDisplayListener extends SimpleImageLoadingListener {

static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>());

@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
if (loadedImage != null) {
ImageView imageView = (ImageView) view;
boolean firstDisplay = !displayedImages.contains(imageUri);
if (firstDisplay) {
FadeInBitmapDisplayer.animate(imageView, 500);
displayedImages.add(imageUri);
}
}
}
}

我已经用 3 部手机测试过它并且工作正常,但是当我在我 friend 的手机上测试它时,有时其中一张图片没有显示。

例如,当我进入 activity 时,它会显示所有图像,当我向下滚动到最后一个项目不再显示的地方然后向上滚动时,突然之间,之前显示的其中一张图像不再显示了,它显示它的默认图像。

这段代码有什么问题吗?顺便说一下,我有 4 个标签,这发生在标签中。

谢谢

最佳答案

displayImage 方法的问题,在某些情况下它无法正确编码 URL ..更好的方法你应该使用 Picasso 库

如果你使用的是android studio那么添加

compile 'com.squareup.picasso:picasso:2.5.2'

在 build.gradle 文件中同步:

否则Picasso Site下载用于 eclipse 的 Jar 文件

之后你就可以使用 Picasso 库并将你的行替换为

if(item.get("img").length()>0)
imageLoader.displayImage("http://website.com/img/" + item.get("img"), holder.img, options,
imageListener);
else
holder.img.setImageDrawable(getResources().getDrawable(R.drawable.fix));
}

String imgUrl = "http://website.com/img/" + item.get("img");
if (!imgUrl.equals(""))
Picasso.with(activity).load(imgUrl).into(holder.img);
else
Picasso.with(activity).load(R.drawable.fix).into(holder.img );

关于向上和向下滚动时 ListView 中的android-ImageView不显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32304368/

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