public void OnScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
            {
                Console.WriteLine("on scrolll event");

                if (psl.mDelegateOnScrollListener != null)                   // delegate
                {
                    psl.mDelegateOnScrollListener.OnScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
                }

                // get expected adapter or fail fast
                IListAdapter adapter = psl.Adapter;

                if (adapter == null || visibleItemCount == 0)
                {
                    return;                                                           // nothing to do
                }
                Boolean isFirstVisibleItemSection =
                    isItemViewTypePinned(adapter, adapter.GetItemViewType(firstVisibleItem));

                if (isFirstVisibleItemSection)
                {
                    View sectionView = psl.GetChildAt(0);
                    if (sectionView.Top == psl.PaddingTop)                       // view sticks to the top, no need for pinned shadow
                    {
                        psl.destroyPinnedShadow();
                    }
                    else                         // section doesn't stick to the top, make sure we have a pinned shadow
                    {
                        psl.ensureShadowForPosition(firstVisibleItem, firstVisibleItem, visibleItemCount);
                    }
                }
                else                     // section is not at the first visible position
                {
                    int sectionPosition = psl.findCurrentSectionPosition(firstVisibleItem);
                    if (sectionPosition > -1)                       // we have section position
                    {
                        psl.ensureShadowForPosition(sectionPosition, firstVisibleItem, visibleItemCount);
                    }
                    else                         // there is no section for the first visible item, destroy shadow
                    {
                        psl.destroyPinnedShadow();
                    }
                }
            }