我正在使用CardView
和RecyclerView
来显示卡片列表,这些卡片非常重。在大多数卡片中,图片的宽度128dp
高度为match_parent
(因此几乎整个屏幕都是如此)。
我正在使用Picasso
库加载此图像。
问题是,在一些滚动图像不再加载后,我认为这是由于没有留下图像的内存
后台粘性并发标记扫描GC释放45617(2MB)AllocSpace 对象,8(256KB)LOS对象,20%免费,7MB / 9MB,总共暂停1.971ms 116.640ms
暂停所有线程:13.892ms
如何制作RecyclerView
转储文件,这些转储文件看不到,只加载新文件?
@Override
public void onBindViewHolder(EventViewHolder viewHolder, int i) {
Event event = events.get(i);
if (event.getThumbnail() != null) {
Picasso.with(context).load(event.getThumbnail()).into(viewHolder.thumbnail);
} else {
viewHolder.thumbnail.setVisibility(View.GONE);
}
...
}
<ImageView
android:id="@+id/row_main_thumbnail"
android:layout_width="match_parent"
android:layout_height="128dp"
android:layout_below="@+id/row_main_description"
android:contentDescription="@string/event_picture"
android:scaleType="centerCrop" />
编辑:
我认为问题不在于RecyclerView
本身,而是else statement
我的意思是setVisibility(View.GONE)
在这里搞乱,这就是图像没有出现的原因。
答案 0 :(得分:3)
@Override
public void onBindViewHolder(EventViewHolder viewHolder, int i) {
Event event = events.get(i);
if (event.getThumbnail() != null) {
Picasso.with(context).load(event.getThumbnail()).into(viewHolder.thumbnail);
viewHolder.thumbnail.setVisibility(View.VISIBLE);
} else {
viewHolder.thumbnail.setVisibility(View.GONE);
}
}