【发布时间】:2019-02-18 21:42:08
【问题描述】:
我知道如何使用 glide 将图像插入到常规 ImageView 中
(Glide.with(context)
.load(url).morepossiblestuff()
.into(imageView);)
但现在我有一个ArrayList,其中插入了一个图像('到目前为止来自可绘制对象,表示为 int)和文本,最后整个项目在 RecyclerView 中显示为卡片视图项目...
但是我的 RecyclerView 已经变得非常滞后,可能是因为直接从可绘制对象中加载所有内容,而没有调整大小(?)。
所以我坚持把 .png 放在 firebase 的文件夹中..
但如果一个项目看起来像这样:
List.add(new Item(R.drawable.resource, "Title", "Description"));
如何使用 glide 而不是 R.drawable.resource 从 Firebase 插入图片?
这是 onBindViewHolder 适配器:(认为您只需要这个?)
@Override
public void onBindViewHolder(@NonNull ViewHolder ViewHolder, int position){
Item currentItem = mList.get(position);
ViewHolder.Cover.setImageResource(currentItem.getCover());
ViewHolder.Title.setText(currentItem.getTitle());
ViewHolder.Description.setText(currentItem.getDescription());
这是项目:
public class GameItem {
private int Cover;
private String Title;
private String Description;
public Item(int CoverImage, String TextTitle, String TextDescription) {
Cover = CoverImage;
Title = TextTitle;
Description = TextDescription;
}
public int getCover() {
return Cover;
}
TLDR:
如何将图像从 Firebase 加载到 ArrayList 的单个元素中? 每个项目都应该有不同的图像。 如果不是,我该如何消除延迟?
谢谢你,真的。
【问题讨论】:
-
请问为什么要将位图加载到数组中而不是仅仅使用 Glide 将图像加载到封面 ImageViews 中?通过将其加载到数组中,您会浪费大量内存 Glide 将自行处理开始和停止加载图像并节省内存。 Glide 可以处理加载 url 以及资源 id。
-
我真的不明白 Glide 会如何处理这个问题。 glide 不会改变 ImageView 本身,因此每个项目的每个 Image 都相同吗?因为 ImageView 是 sime,单个元素基于 cardview xml 布局文件,正如您可能已经想象的那样
-
在您的 onBindViewHolder 调用中
Glide.with(viewHolder.Cover).load(currentItem.getCover()).into(ViewHolder.Cover);每个 ViewHolder 都有一个对与onCreateViewHolder关联的不同 imageView 的引用。相信我,它会起作用的。 -
我试试看告诉你,非常感谢
-
嘿 Ge3ng,我刚刚尝试了你的建议。我要热烈感谢你,因为它有效。已经搜索了三天,但我无法理解其他解决方案,主要是因为他们没有指定将某些特定代码放在哪里。如果您将其发布为答案,我会将其标记为正确
标签: java android firebase android-glide image-loading