ImageView.setImageResource(int id);
показывает OutOfMemoryError
. У меня есть TableLayout
в том, что я добавляю TableRow
прагматично, в каждой строке я устанавливаю изображение, которое уже находится в папке ресурсов моих проектов, я ссылаюсь на эти изображения с resource_id
.OutOfMemoryError при выполнении setImageResource()
private void addItems() {
table.removeAllViews();
Random rand = new Random();
for (int i = 0; i < 20; i++) {
TableRow row = new TableRow(getActivity());
table.addView(row);
RelativeLayout profile = (RelativeLayout) getLayoutInflater(null).inflate(R.layout.buddyname, null);
TextView name = (TextView) profile.findViewById(R.id.name);
name.setText(randomNames[i]);
ImageView photo = (ImageView) profile.findViewById(R.id.photo);
photo.setImageResource(randomPhoto[new Random().nextInt(randomPhoto.length - 1)]);
row.addView(profile);
}
}
каждый раз, когда я делаю table.removeAllViews();
даже тогда он не работает, могу я думаю, это потому, что ресурс изображения снова и снова загружается на куче и не очищая кучу, мы можем ссылаться на ранее загруженное изображении, является там любое решение.
Вы говорите правильно, но я должен показать всех приятелей в списке и сетке, показывать каждый раз, когда пользователь меняет режим макета, я удаляю предыдущие строки таблицы и добавляю новые. – umesh
Вы можете легко изменить между ListView и GridView, поскольку они расширяют AbsListView. Просто держите ссылку на AbsListView и создайте GridView или ListView, который зависит от вашей настройки и установите соответствующий адаптер. Кроме того, возможно, что вы показываете большие изображения аватаров. Используйте Options.inSampleSize для загрузки масштабированных растровых изображений. Или, если вы используете ресурсы, убедитесь, что фотографии невелики. –
, но в чем проблема с этим кодом, если я нажму для changeToList и changeToGrid снова покажу его OutOfMemoryError. Если я прокомментирую строку 'photo.setImageResource (randomPhoto [new Random(). NextInt (randomPhoto.length - 1)]);', это не делает никаких проблем – umesh