Update empty view state

The state of the empty view needs to be updated whenever the dataset is
changed or invalidated

In AdapterView the `updateEmptyStatus()` method is called from inside `checkFocus()` which is called from `DataSetObserver.onChanged()` and `DataSetObserver.onInvalidated()`. 

ListView and GridView also call `checkFocus()` when the adapter is set. 

Neither `checkFocus()` or `updateEmptyState()` are accessible so we'll have to keep a reference to the empty view to update it's visibility.