Вы можете создать подкласс 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