Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Piccaso显示占位符时,如何重新显示progressBar?_Java_Android_Android Listview_Android Asynctask_Picasso - Fatal编程技术网

Java 使用Piccaso显示占位符时,如何重新显示progressBar?

Java 使用Piccaso显示占位符时,如何重新显示progressBar?,java,android,android-listview,android-asynctask,picasso,Java,Android,Android Listview,Android Asynctask,Picasso,我有一个列表视图,每个项目中都有一个图像 每当图像还没有加载到每个项目中时,我希望有一个progressBar 包括回收列表和再次显示占位符的时间 此外,当我没有毕加索的情况下自己下载这些图片时,我也很高兴 我过去常常将imageUrl设置为每个项目的标记,并在加载图像之前检查url是否仍然存在,或者因为回收而将其替换,这样就不需要加载回调的图像 毕加索如何处理这种回收 如何配置毕加索图像缓存?您必须添加 progressBar.setVisibility(View.VISIBLE); 在ge

我有一个列表视图,每个项目中都有一个图像

每当图像还没有加载到每个项目中时,我希望有一个progressBar

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

此外,当我没有毕加索的情况下自己下载这些图片时,我也很高兴

我过去常常将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;
}

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

谢谢,它很有效。但我不明白。如果项目是循环使用的,而不是毕加索重新下载的-progressBar不会永远保留吗?每当您的视图第一次生成数据加载或视图得到循环使用的数据更改时,就会调用getView。现在,无论何时调用getView,我们都调用progressBar.setVisibilityView.VISIBLE;因此,将为正在加载的项目显示progressBar。一旦图像被下载,它的可见性就消失了。同样,如果加载行,将显示相同的进度条。而且它还在继续。。。希望这能解释答案。