我有一个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链接。