Я хотел создать представление фотоальбомов в виде ресайклера, и когда пользователь нажимает на альбом, он расширяется до макета сетки, показывающего изображения в этом альбоме.
Например, без раскрытия:
и расширен:
Макет внешнего элемента recyclerView содержит только textView, флажок и невидимый recyclerview, который становится видимым при щелчке по элементу.
Я объявил внешний адаптер следующим образом:
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 элементов, приложение вылетает из-за большого использования памяти. Но, как видите, я использую скольжение для загрузки изображений, а также RecyclerView не должен создавать все представления сразу. Но я вижу, что внутренний RecyclerView создает все представления элементов одновременно, что приводит к сбою приложения.
Как я могу исправить эту проблему? Любая помощь будет оценена по достоинству.