Instead of subclassing you can use decoration:
class WatchedView { static class Listener { void onVisibilityChanged(int visibility); } private View v; private Listener listener; WatchedView(View v) { this.v = v; } void setListener(Listener l) { this.listener = l; } public setVisibility(int visibility) { v.setVisibility(visibility); if(listener != null) { listener.onVisibilityChanged(visibility); } } }
Then
WatchedView v = new WatchedView(findViewById(R.id.myview)); v.setListener(this);
Alexander Kulyakhtin
source share