Как загрузить изображения в виджете в элементе listView с помощью скольжения (или другого) - PullRequest
0 голосов
/ 06 мая 2019

У меня есть виджет с ListView.И я пытаюсь загрузить изображение в элемент списка в ImageView

var uri = Uri.Parse(item.UrlPreviewImage);
var widgetTarget = new AppWidgetTarget(_context, Resource.Id.imageView_widgetListItemRss_rssIcon, itemView, _widgetId);
Xamarin.Essentials.MainThread.BeginInvokeOnMainThread(() =>
    {
        Glide.With(_context.ApplicationContext)
             .AsBitmap()
             .Load(uri)
             .Into(widgetTarget);
    });

, и это работает, но некоторые странные.Он удаляет с экрана другие элементы и делает фон прозрачным.

enter image description here

Но должен работать так (только с иконками слева):

enter image description here

Что я должен сделать?Спасибо

PS Код на C #, но на Kotlin или Java также будет полезен

Еще код:

public RemoteViews GetViewAt(int position)
{
    var itemView = new RemoteViews(_context.PackageName, Resource.Layout.widget_list_item_rss);

    var item = _list[position];

    var subTitle = item.UpdateTime == null
        ? Strings.RssFeedItemNotUpdated
        : $"{Strings.RssFeedItemUpdated} {item.UpdateTime.Value.ToShortGeneralLocaleString()}";
    var countMessages = item.CountNewMessages.ToString();

    itemView.SetTextViewText(Resource.Id.textView_widgetListItemRss_title, item.Name);
    itemView.SetTextViewText(Resource.Id.textView_widgetListItemRss_subtitle, subTitle);
    itemView.SetTextViewText(Resource.Id.textView_widgetListItemRss_rssCount, countMessages);
    if (!string.IsNullOrEmpty(item.UrlPreviewImage))
    {
        var uri = Uri.Parse(item.UrlPreviewImage);
        var widgetTarget = new AppWidgetTarget(_context, Resource.Id.imageView_widgetListItemRss_rssIcon, itemView, _widgetId);

        Xamarin.Essentials.MainThread.BeginInvokeOnMainThread(() =>
        {
            Glide.With(_context.ApplicationContext)
                .AsBitmap()
                .Load(uri)
                .Into(widgetTarget);
        });
    }

    return itemView;
}

1 Ответ

0 голосов
/ 06 мая 2019

Я разрешаю это с Пикассо

if (!string.IsNullOrEmpty(item.UrlPreviewImage))
{
    try
    {
        var picture = Picasso.With(_context).Load(item.UrlPreviewImage).Get();
        itemView.SetImageViewBitmap(Resource.Id.imageView_widgetListItemRss_rssIcon, picture);
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
    }
}
...