Виджет приложения RemoteViews с несколькими загрузками изображений с помощью Glide - PullRequest
0 голосов
/ 25 сентября 2018

Я занимаюсь разработкой виджета с ListView, который будет отображать 5 самых последних сообщений моего приложения.Каждый пост будет содержать некоторый текст, и я надеялся также добавить уникальное изображение для каждого поста (обложка альбома).Я обнаружил, что загрузка изображения для RemoteViews не так проста.

Я следовал этому уроку , чтобы использовать Glide для загрузки изображений, но, похоже, он не работает для моего конкретного случая.Учебник обновляет изображение в пределах onUpdate() от AppWidgetProvider.Для меня это нормально, если у вас есть одно изображение для загрузки.Тем не менее, у меня есть несколько изображений, которые необходимо загрузить, по одному для каждого элемента списка в моем ListView.Кроме того, у меня нет ссылки на изображение, которое я хотел бы загрузить в onUpdate().У меня не будет ссылки на изображение до getViewAt() в моем RemoteViewsService.

До сих пор я пытался сделать это в getViewAt() следующим образом:

@Override
public RemoteViews getViewAt(int position) {
    final RemoteViews remoteViews = new RemoteViews(mContext.getPackageName(), R.layout.list_item_app_widget);
    final Post currentPost = mPosts.get(position);
    remoteViews.setTextViewText(R.id.list_item_app_widget_title, currentPost.getTitle());
    remoteViews.setTextViewText(R.id.list_item_app_widget_artist, currentPost.getArtists());

    AppWidgetTarget target = new AppWidgetTarget(mContext, R.id.list_item_app_widget_artwork, remoteViews, mAppWidgetID){
        @Override
        public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
            super.onResourceReady(resource, transition);
        }
    };

    GlideApp
            .with(mContext.getApplicationContext())
            .asBitmap()
            .load(currentPost.getPhotoUrl())
            .into(target);

    return remoteViews;
}

Однако, когда я помещаю виджет на домашний экран, я получаю ANR, потому что выдается исключение, так как RemoteViewsService возвращает RemoteViews, что составляет null, хотя я не до конца понимаю, почему это происходит.

Я пытался выполнить ту же задачу, используя Picasso, которая на самом деле является библиотекой изображений, которую я использую чаще, но (вкратце) я также не смог заставить ее работать.

Кто-нибудь пытался загрузить несколько изображений для RemoteViews?Любая помощь по этому вопросу будет принята с благодарностью.

...