Как организовать изображения?
подскажите как решить такую задачу. Есть изображения (около 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 шт):
В случае что подкатегории не повторяются в других категориях и изображения тоже, простая древовидная структура подойдет.
Конкретнее JSON типа такого
[
{
name: cat1,
subcats: [
{
name: sub1,
images: [ name1, name2, name3]
},
{
name: sub2,
images: [ ... ]
},
]
},
{
name: cat2,
subcats: [...]
}
]
Вложенность можете организовать любую.
JSON как текст хранить в ресурсах или скачивать с сервера.
В папке assets можно создавать подпапки, таким образом перенести все дерево, а выбор содержимого текущего каталога осуществлять так
AssetManager am = context.getAssets();
String[] list_assets = am.list(current_folder);
Очевидно, что при добавлении новых изображений не нужно пересоздавать дополнительные данные.