如何通过滑翔(或其他)在listView项目中加载小部件中的图像
Posted
技术标签:
【中文标题】如何通过滑翔(或其他)在listView项目中加载小部件中的图像【英文标题】:How load images in widget in listView item via glide (or other) 【发布时间】:2019-09-24 01:07:31 【问题描述】:我有带有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);
);
它有效,但有些奇怪。它从屏幕上移除其他元素并使背景透明。
但必须像这样工作(仅在左侧有图标):
我必须做什么?谢谢
附: 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;
【问题讨论】:
Glide.AsBitmap()需要什么?尝试删除它。 @NickBapu 我得到java.lang.ClassCastException: android.graphics.drawable.BitmapDrawable cannot be cast to android.graphics.Bitmap.
Glide.AsBitmap 刚刚投
【参考方案1】:
对于 Glide ver.4,我使用:
FutureTarget<Bitmap> futureTarget = Glide.with(context)
.asBitmap()
.load("picture URL")
.submit(250, 250);
try
row.setImageViewBitmap(R.id.yourImageViewInItemView, futureTarget.get());
catch (InterruptedException | ExecutionException e)
e.printStackTrace();
【讨论】:
【参考方案2】:我用毕加索解决了
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);
【讨论】:
以上是关于如何通过滑翔(或其他)在listView项目中加载小部件中的图像的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 中加载动态项目时无法将页脚视图添加到列表视图
如何通过Spring Boot在MongoDB中加载初始数据?