@Override
 public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
   super.onLayoutChildren(recycler, state);
   if (dataChangedListener != null) {
     dataChangedListener.onDataChanged();
   }
 }
 @Override
 public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
   super.onLayoutChildren(recycler, state);
   cacheHeaderPositions();
   positioner.reset(getOrientation(), findFirstVisibleItemPosition());
   positioner.updateHeaderState(
       findFirstVisibleItemPosition(), getVisibleHeaders(), viewRetriever.setRecycler(recycler));
 }