Android обратный вызов Пикассо при использовании цели - PullRequest
0 голосов
/ 28 января 2020

У меня есть метод, который создает цели для Пикассо, например:

private void createTargets() {
    Target target;

    for (Id id : itemids) {
        target = picassoImageTarget(getContext(), "imageDir", id.getId() + ".png");
        imgTargets.add(new ImgTarget(id.getId(), target));
    }
}

, а затем я загружаю изображения на диск следующим образом:

private void download() {
    for (ImgTarget imgTarget : imgTargets) {

        Picasso.with(getContext()).load("https://www.sestavsisvujsvet.cz/files/magnetky/" + imgTarget.getId() + ".png").into(imgTarget.getTarget());

    }
}

он делает то, что мне нужно но я не могу получить обратный вызов, потому что конструктор с обратным вызовом существует только при использовании ImageView:

Ctrl + P

Может кто-нибудь помочь мне найти решение этой проблемы? Я не очень хорошо понимаю обратные вызовы и тому подобное, поэтому мне сложно это понять.

Мне просто нужно знать, когда закончится весь процесс загрузки, чтобы я мог уведомить пользователя.

Спасибо:)

1 Ответ

1 голос
/ 28 января 2020

Пикассо Target по сути является обратным вызовом, если вы посмотрите на объект Target, он имеет следующую структуру:

Target target = new Target() {
    @Override
    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
        // Notify the user
    }

    @Override
    public void onBitmapFailed(Exception e, Drawable errorDrawable) {
        // Notify the user
    }

    @Override
    public void onPrepareLoad(Drawable placeHolderDrawable) {

    }
};

В вашей функции picassoImageTarget(...) вы бы строили эту цель и внутри onBitmapLoaded и onBitmapFailed вы можете вставить свой код, чтобы уведомить пользователя в зависимости от вашей реализации. Кроме того, я заметил, что вы используете Picasso.with(context), оно было обновлено до Picasso.get() в последней библиотеке, возможно, стоит обновить и вашу библиотеку picasso до последней версии.

...