2012-05-28 2 views
0

У меня есть класс с именем PlayerList, в в этом классе у меня есть ArrayList определено, как это:Как удалить Bitmap из ArrayList?

private ArrayList<Bitmap> images = new ArrayList<Bitmap>(); 

Теперь метод ArrayList может удалить 2 аргумента Зависит, индекс и объекта.

Я пытаюсь удалить растровое изображение из массива, отправив ему Bitmap. Дело в том, что бит-карта сделана из одного и того же изображения, но вставка битмапа, которую я сохранил в массиве, не то же самое, я пытаюсь найти, когда я печатаю ArrayList для консоли, я все время вижу новые имена, например:

[[email protected], [email protected]] 

Это может быть связано? и в то время как в этом нет, класс реализует Parcelable, поэтому данные, которые читаются/записываются взад и вперед, тоже не могут быть слишком здоровыми, верно?

У меня отсутствует общая проблема или ее код, и я должен опубликовать свой код?

Моя проблема здесь basiclly когда я пытаюсь удалить Bitmap, он ВСЕГДА удаляет неправильный элемент в ArrayList, всегда 1 до 1 мне нужно

+0

Если экземпляр отличается, если вы не создаете методы equals/hash, которые проверяют содержимое * изображения *, вам не повезло. Вы можете использовать другой механизм, например, дать им идентификатор или ссылаться на них по имени и т. Д. –

+0

И если я буду использовать Drawable вместо этого? это будет работать? –

+0

Речь идет не о том, каким интерфейсом обладает ваш класс «Bitmap». Метод 'remove' использует метод' equals' вашего объекта «Bitmap», чтобы найти и удалить его из списка. Итак, если вы не правильно реализуете метод 'equals' в классе« Bitmap », вы не можете ожидать, что метод ArrayList.remove удалит правильный объект. –

ответ

0

Если у вас есть дескриптор BitMap's хэш-кодом или как ключ, на основе которого он хранится, вы не можете удалить желаемый из списка. Если вы просто хотите зависеть от BitMap, вам необходимо пройти через список и проанализировать элементы, чтобы найти нужный растровый рисунок. Опять же, вам нужно указать код, чтобы определить, является ли ваш синтаксический анализ BitMap тем, что вы ищете. Это означает, что вам необходимо сохранить список hashcode's для каждого из BitMap. В качестве альтернативы используйте HashMap над List, что позволяет хранить key в отношении сохраненного BitMap. И вы можете обработать свое требование на основе key и использовать его, когда требуется, чтобы удалить BitMap из таблицы HashMap.

HashMap<String, BitMap> myBitMaps = ... // construct as you desire. 
... 
if (condition satisfied on key) { 
    myBitMaps.remove(keyObject); 
    // process further 
} 
Смежные вопросы