我有一个listView在每个项目中都有一个图像。

每当图像尚未加载到每个项目中时,我都希望有一个progressBar。

包括列表回收时和再次显示占位符时。

另外,我以前没有Picasso自己下载图像时

我以前将imageUrl设置为每个项目的标签,并在加载图像之前检查url是否仍然存在(或者由于回收而被替换,因此不需要加载回调的图像)。

毕加索如何处理这种回收?

如何配置毕加索图像缓存?

最佳答案

您必须添加

progressBar.setVisibility(View.VISIBLE);


在您的getView()中是这样的:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    if (convertView == null)
        vi = inflater.inflate(R.layout.list_row, null);

    ImageView imageView = (ImageView) vi.findViewById(R.id.imageView);
    final ProgressBar progressBar = (ProgressBar) vi.findViewById(R.id.progressBar);
    TextView textView = (TextView) vi.findViewById(R.id.textView);

    textView.setText("" + position);

    progressBar.setVisibility(View.VISIBLE);

    Picasso.with(activity.getApplicationContext()).load(imagePath).resize(100, 100).centerCrop()
            .into(imageView, new Callback() {
                @Override
                public void onSuccess() {
                    progressBar.setVisibility(View.GONE);
                }

                @Override
                public void onError() {
                    //error
                }
            });

    return vi;
}


要了解有关视图回收的更多详细信息,请单击this链接。

07-24 09:47
查看更多