protected internal virtual void InitializeListeners() { // --- Listeners to help Scroll synchronously --- // It handles Vertical scroll listener mVerticalRecyclerListener = new VerticalRecyclerViewListener(this); // Set this listener both of Cell RecyclerView and RowHeader RecyclerView mRowHeaderRecyclerView.AddOnItemTouchListener(mVerticalRecyclerListener); mCellRecyclerView.AddOnItemTouchListener(mVerticalRecyclerListener); // It handles Horizontal scroll listener mHorizontalRecyclerViewListener = new HorizontalRecyclerViewListener(this); // Set scroll listener to be able to scroll all rows synchrony. mColumnHeaderRecyclerView.AddOnItemTouchListener(mHorizontalRecyclerViewListener); // --- Listeners to help item clicks --- // Create item click listeners mColumnHeaderRecyclerViewItemClickListener = new ColumnHeaderRecyclerViewItemClickListener(mColumnHeaderRecyclerView, this); mRowHeaderRecyclerViewItemClickListener = new RowHeaderRecyclerViewItemClickListener(mRowHeaderRecyclerView, this); // Add item click listeners for both column header & row header recyclerView mColumnHeaderRecyclerView.AddOnItemTouchListener(mColumnHeaderRecyclerViewItemClickListener); mRowHeaderRecyclerView.AddOnItemTouchListener(mRowHeaderRecyclerViewItemClickListener); // Add Layout change listener both of Column Header & Cell recyclerView to detect // changing size // For some case, it is pretty necessary. TableViewLayoutChangeListener layoutChangeListener = new TableViewLayoutChangeListener(this); mColumnHeaderRecyclerView.AddOnLayoutChangeListener(layoutChangeListener); mCellRecyclerView.AddOnLayoutChangeListener(layoutChangeListener); SetTableViewListener(this); }
// Add new one public override void OnAttachedToWindow(RecyclerView view) { base.OnAttachedToWindow(view); // initialize the instances if (mCellRecyclerView == null) { mCellRecyclerView = mTableView.GetCellRecyclerView(); } if (mHorizontalListener == null) { mHorizontalListener = mTableView.GetHorizontalRecyclerViewListener(); } }