Событие пожара при изменении элемента ArrayList - PullRequest
2 голосов
/ 03 февраля 2011

Я работаю над классом Android, который содержит ArrayList общих объектов.Я надеюсь запустить событие в этом классе всякий раз, когда изменяется элемент указанного ArrayList.

В идеальном мире сам ArrayList должен быть закрытым членом, и класс будет содержать открытые методы для добавления /обновите / удалите элемент, и все будет хорошо.

К сожалению, ArrayList выставлен как открытый член, поэтому он и его элементы изменяются повсеместно (приложение).Не переписывая загрузку кода и / или не занимаясь в коде погоней, я надеюсь, что смогу найти способ вызвать событие, когда ArrayList изменяется в классе, содержащем список.Есть идеи?

1 Ответ

5 голосов
/ 03 февраля 2011

Вы можете создать подкласс ArrayList и запустить действие (например, вызвать обратный вызов) после вызова некоторых его методов.

Затем замените оригинальный ArrayList в вашем классе Android на вашу реализацию.

P.S. Пример:

public class MyArrayList<E> extends ArrayList<E> {

@Override
public boolean add(E object) {
    // Do some action here
    return super.add(object);
};

@Override
public void add(int index, E object) {
    super.add(index, object);
    // Do some action here
};

@Override
public E remove(int index) {
    // Do some action here
    return super.remove(index);
}
// etc...

}

Поскольку он является подклассом ArrayList, вы не получите никаких ошибок в своем коде, и все, что работало раньше, будет работать без каких-либо изменений. С небольшим творческим потенциалом класс можно сделать более элегантным и эффективным, но общая идея есть.

Редактировать: Да. Извините, был немного поспешным с этими возвращениями. Исправлено и спасибо Petar

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...