@SuppressLint("CutPasteId")
  @Override
  public View onCreateView(
      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_recycler_view_common, container, false);
    xcRecycleView = (XCRecycleView) rootView.findViewById(R.id.xc_recycler_view);

    emptyView = new EmptyView(getContext());

    headerView = new LinearLayout(getContext());

    if (getActivity() instanceof HeaderViewProvider) {
      HeaderViewProvider headerViewProvider = (HeaderViewProvider) getActivity();

      View view = new View(getContext());
      headerView.addView(
          view,
          new LinearLayout.LayoutParams(
              ViewGroup.LayoutParams.MATCH_PARENT, headerViewProvider.getHeaderViewHeight()));
    }

    baseAdapter = getAdapter();
    adapter = new HeaderRecyclerViewAdapter(getContext(), baseAdapter, headerView, emptyView);

    registerAdapterDataObserver();

    xcRecycleView.setAdapter(adapter);

    xcRecycleView.setLayoutManager(getLayoutManager());

    xcRecycleView.addOnScrollListener(onScrollListener);

    return rootView;
  }
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
          super.onScrolled(recyclerView, dx, dy);

          scrollXValue += dx;
          scrollYValue += dy;

          if (getActivity() instanceof HeaderViewProvider) {
            HeaderViewProvider headerViewProvider = (HeaderViewProvider) getActivity();

            if (scrollYValue < headerViewProvider.getHeaderViewHeight() + 400) {
              headerViewProvider.onHeadScrollHScrolled(scrollYValue);
            }
          }
        }