1818package com .evrencoskun .tableview .handler ;
1919
2020import android .support .v7 .util .DiffUtil ;
21+ import android .util .Log ;
2122
2223import com .evrencoskun .tableview .ITableView ;
2324import com .evrencoskun .tableview .adapter .recyclerview .CellRecyclerViewAdapter ;
2425import com .evrencoskun .tableview .adapter .recyclerview .ColumnHeaderRecyclerViewAdapter ;
2526import com .evrencoskun .tableview .adapter .recyclerview .RowHeaderRecyclerViewAdapter ;
27+ import com .evrencoskun .tableview .sort .ColumnForRowHeaderSortComparator ;
2628import com .evrencoskun .tableview .sort .ColumnSortCallback ;
2729import com .evrencoskun .tableview .sort .ColumnSortComparator ;
2830import com .evrencoskun .tableview .sort .ISortableModel ;
3234
3335import java .util .ArrayList ;
3436import java .util .Collections ;
37+ import java .util .Comparator ;
3538import java .util .List ;
3639
3740/**
@@ -75,18 +78,31 @@ public void sortByRowHeader(final SortState sortState) {
7578 public void sort (int column , SortState sortState ) {
7679 List <List <ISortableModel >> originalList = mCellRecyclerViewAdapter .getItems ();
7780 List <List <ISortableModel >> sortedList = new ArrayList <>(originalList );
78-
81+ List <ISortableModel > originalRowHeaderList
82+ = mRowHeaderRecyclerViewAdapter .getItems ();
83+ List <ISortableModel > sortedRowHeaderList
84+ = new ArrayList <>(originalRowHeaderList );
7985
8086 if (sortState != SortState .UNSORTED ) {
8187 // Do descending / ascending sort
8288 Collections .sort (sortedList , new ColumnSortComparator (column , sortState ));
89+
90+ // Sorting RowHeader using the same logic has sorting DataSet
91+ ColumnForRowHeaderSortComparator columnForRowHeaderSortComparator
92+ = new ColumnForRowHeaderSortComparator (
93+ originalRowHeaderList ,
94+ originalList ,
95+ column ,
96+ sortState );
97+
98+ Collections .sort (sortedRowHeaderList , columnForRowHeaderSortComparator );
8399 }
84100
85101 // Update sorting list of column headers
86102 mColumnHeaderRecyclerViewAdapter .getColumnSortHelper ().setSortingStatus (column , sortState );
87103
88104 // Set sorted data list
89- swapItems (originalList , sortedList , column );
105+ swapItems (originalList , sortedList , column , sortedRowHeaderList );
90106 }
91107
92108 private void swapItems (List <ISortableModel > oldItems , List <ISortableModel > newItems ) {
@@ -104,7 +120,7 @@ private void swapItems(List<ISortableModel> oldItems, List<ISortableModel> newIt
104120 }
105121
106122 private void swapItems (List <List <ISortableModel >> oldItems , List <List <ISortableModel >>
107- newItems , int column ) {
123+ newItems , int column , List < ISortableModel > newRowHeader ) {
108124
109125 // Find the differences between old cell items and new items.
110126 final ColumnSortCallback diffCallback = new ColumnSortCallback (oldItems , newItems , column );
@@ -113,6 +129,7 @@ private void swapItems(List<List<ISortableModel>> oldItems, List<List<ISortableM
113129
114130 // Set new items without calling notifyCellDataSetChanged method of CellRecyclerViewAdapter
115131 mCellRecyclerViewAdapter .setItems (newItems , false );
132+ mRowHeaderRecyclerViewAdapter .setItems (newRowHeader , false );
116133
117134 diffResult .dispatchUpdatesTo (mCellRecyclerViewAdapter );
118135 diffResult .dispatchUpdatesTo (mRowHeaderRecyclerViewAdapter );
0 commit comments