Как организовать изображения?

подскажите как решить такую задачу. Есть изображения (около 100 штук) уже в ужатом формате webp.

Эти изображения делятся по категориям, (к примеру пейзажи/еда/спорт ... итд) и в каждой категории есть своя подкатегория (еда - русская кухня/китайская итд, спорт - бокс/бег/футбол итд) и таких подкатегорий несколько -> И нужно сделать так чтобы в выпадающем спиннере или в recyclerView при нажатии на категорию открывался спиннер/список с "внутренней" подкатегорией, потом следующая подкатегория и в этой подкатегории еще следующая итд, и при нажатии на конечную отображалась конкретное изображение.

Но самое сложное в этом, что я никак не могу понять это как организовать логику соответствия списка к изображениям, чтобы код не был громоздким. Потому как я только додумался до того чтобы создать map, сохранить отдельно все виды категорий в stringах или массивах/arraylist, и просто в мапе перебрать каждый вариант конечного составленного stringа на соответствие ("food.asian.sushi" to "assets/sushi.webp", "sport.box" to "assets/boxer.webp") но до чего-то более умного не додумался.

Подскажите идею каким образом можно удобнее и быстрее прописать к каждому конечному itemу с той или иной категории соответствующее ему изображение?

Кстати правильно ли я сделал что изображения в формате webp поместил в заранее созданную папку assets? Изображения там и так небольшие (до 50кб), и мне не очень хочется делать их для каждого размера экрана чтобы много не занимало памяти конечное приложение.


Ответы (2 шт):

Автор решения: Eugene Krivenja

В случае что подкатегории не повторяются в других категориях и изображения тоже, простая древовидная структура подойдет.
Конкретнее JSON типа такого

[
  { 
    name: cat1,
    subcats: [
      {
         name: sub1,
         images: [ name1, name2, name3]
      },
      {
         name: sub2,
         images: [ ... ]
      },
    ]
  },
  { 
    name: cat2,
    subcats: [...]
  }
]

Вложенность можете организовать любую.
JSON как текст хранить в ресурсах или скачивать с сервера.

→ Ссылка
Автор решения: Style-7

В папке assets можно создавать подпапки, таким образом перенести все дерево, а выбор содержимого текущего каталога осуществлять так

AssetManager am = context.getAssets();
String[] list_assets = am.list(current_folder);

Очевидно, что при добавлении новых изображений не нужно пересоздавать дополнительные данные.

→ Ссылка