我正在开发一个包含通用对象ArrayList的Android类。每当修改所述ArrayList的元素时,我希望在该类中触发一个事件。
在一个理想的世界中,ArrayList本身应该是一个私有成员,并且该类将包含添加/更新/删除元素的公共方法,一切都会很好和花花公子。
不幸的是,ArrayList作为公共成员公开,因此它及其元素在整个地方(应用程序)被修改。如果没有重写代码的船载和/或在代码中进行疯狂追逐,我希望我能找到在包含列表的类中修改ArrayList时触发事件的方法。有什么想法吗?
答案 0 :(得分:5)
在调用其中一些方法之后,您可以继承ArrayList并触发一个动作(例如调用一个回调)。
然后用您的实现替换Android类中的原始ArrayList。
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