【发布时间】:2020-07-12 16:24:26
【问题描述】:
我想创建一个相册的回收视图,当用户点击相册时,它会展开为显示该相册中图像的网格布局。
例如,非扩展:
并展开:
外层recyclerView项目的布局只包含一个textView、checkbox和一个不可见的recyclerview,在点击item时可见。
我这样声明了 outerAdapter:
photosVideosAdapter = new PhotosVideosAdapter(getContext(),new ArrayList<PhoneAlbum>());
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setAdapter(photosVideosAdapter);
这里是外部适配器的onBindViewHolder:
holder.tvFolder.setText(phoneAlbums.get(position).getName());
ArrayList<PhonePhoto> phonePhotos = phoneAlbums.get(position).getAlbumPhotos();
InnerAdapter innerAdapter = new InnerAdapter(context, phonePhotos);
holder.innerRecyclerView.setHasFixedSize(true);
holder.innerRecyclerView.setLayoutManager(new GridLayoutManager(context,3));
holder.innerRecyclerView.setAdapter(innerAdapter);
.... OnClickMethod to toggle visibility of innerRecyclerView
内部适配器的 onBindViewHolder:
Glide.with(context)
.load(phonePhotos.get(position).getPhotoUri())
.override(200,200)
.into(holder.imgThumbnail);
问题是如果内部 recyclerView 包含超过 200 个项目,应用程序会由于高内存使用而崩溃。但正如你所看到的,我正在使用 glide 加载图像,而且 RecyclerView 不应该一次创建所有视图。但是,我可以看到内部 RecyclerView 正在一次创建所有项目视图,这导致应用程序崩溃。
我该如何解决这个问题?任何帮助将不胜感激。
【问题讨论】:
-
问题是内部 recyclerView 正在一次加载所有视图。所以,如果内部的 recyclerView 有 1000 张图片,所有的图片都是一次性加载的,这不是 recyclerView 应该做的。
标签: android android-recyclerview android-viewholder nestedrecyclerview