ошибка происходит потому, что весь ваш декодируются вводимый коэффициент в виде растровых изображений. Подумайте о том, чтобы хранить int
id в вашем Collection
(например, R.drawable.someimagename
) и получить реальный объект Drawable
как раз вовремя, когда это необходимо.
Поскольку у вас есть постоянное количество записей с номерами от 0-21, вы можете использовать массив:
int[] groundForceDrawables = new int[22];
groundForceDrawables[0] = R.drawable.sotamies_kauluslaatta;
groundForceDrawables[1] = R.drawable.korpraali_kauluslaatta;
// and so on
Когда вам действительно нужно сделать изображение с индексом я:
Drawable myCurrentDrawable = getResources().getDrawable(groundForceDrawables[i]);
Это будет приемлемо только в том случае, если вам не нужно одновременно отображать все чертежи. Если вам нужно сохранить объекты Drawable в кеше вместе, так как вы должны отображать их все одновременно, я по-прежнему рекомендую их масштабировать, ваша куча будет достаточно большой, чтобы сохранять растровые изображения, чтобы заполнить экран, если их разрешение бесполезно высоко ,
Также вы можете увеличить размер кучи, если вы еще не сделали этого уже: How to increase heap size of an android application?
Попробуйте сжимать эти изображения. Если прозрачность не важна, сделайте их jpegs – peter
Не можете ли вы использовать меньшие изображения? Нужно ли одновременно загружать все изображения в память? Может быть, вы можете загрузить их в программу tv, а затем выгрузить tvem. – user3532232