0

I'd like to remove an adapter from a MergeAdapter, as per this question:

Remove view from MergeAdapter

Do we need to clean up the observer registered with the child adapter in addAdapter()? For example:

public void addAdapter(ListAdapter adapter) {
    pieces.add(adapter);
    adapter.registerDataSetObserver(new CascadeDataSetObserver()); /// *** ///
}

public void removeAdapter(int position) {
    ListAdapter adapter = pieces.remove(position);
    adapter.unregisterDataSetObserver(????);  //// ??? ////
}

Do we need to unregister the datasetobserver here?

Community
  • 1
  • 1
user291701
  • 38,411
  • 72
  • 187
  • 285

1 Answers1

1

You could if you wanted. However, bear in mind that all registerDataSetObserver() is doing, in effect, is setting up a reference from the added ListAdapter to the MergeAdapter, not the other way around. Hence, so long as you will be discarding your removed ListAdapter, the registered observer should also get garbage-collected.

CommonsWare
  • 986,068
  • 189
  • 2,389
  • 2,491