18
18
package com .evrencoskun .tableview .handler ;
19
19
20
20
import android .support .v7 .util .DiffUtil ;
21
+ import android .util .Log ;
21
22
22
23
import com .evrencoskun .tableview .ITableView ;
23
24
import com .evrencoskun .tableview .adapter .recyclerview .CellRecyclerViewAdapter ;
24
25
import com .evrencoskun .tableview .adapter .recyclerview .ColumnHeaderRecyclerViewAdapter ;
25
26
import com .evrencoskun .tableview .adapter .recyclerview .RowHeaderRecyclerViewAdapter ;
27
+ import com .evrencoskun .tableview .sort .ColumnForRowHeaderSortComparator ;
26
28
import com .evrencoskun .tableview .sort .ColumnSortCallback ;
27
29
import com .evrencoskun .tableview .sort .ColumnSortComparator ;
28
30
import com .evrencoskun .tableview .sort .ISortableModel ;
32
34
33
35
import java .util .ArrayList ;
34
36
import java .util .Collections ;
37
+ import java .util .Comparator ;
35
38
import java .util .List ;
36
39
37
40
/**
@@ -75,18 +78,31 @@ public void sortByRowHeader(final SortState sortState) {
75
78
public void sort (int column , SortState sortState ) {
76
79
List <List <ISortableModel >> originalList = mCellRecyclerViewAdapter .getItems ();
77
80
List <List <ISortableModel >> sortedList = new ArrayList <>(originalList );
78
-
81
+ List <ISortableModel > originalRowHeaderList
82
+ = mRowHeaderRecyclerViewAdapter .getItems ();
83
+ List <ISortableModel > sortedRowHeaderList
84
+ = new ArrayList <>(originalRowHeaderList );
79
85
80
86
if (sortState != SortState .UNSORTED ) {
81
87
// Do descending / ascending sort
82
88
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 );
83
99
}
84
100
85
101
// Update sorting list of column headers
86
102
mColumnHeaderRecyclerViewAdapter .getColumnSortHelper ().setSortingStatus (column , sortState );
87
103
88
104
// Set sorted data list
89
- swapItems (originalList , sortedList , column );
105
+ swapItems (originalList , sortedList , column , sortedRowHeaderList );
90
106
}
91
107
92
108
private void swapItems (List <ISortableModel > oldItems , List <ISortableModel > newItems ) {
@@ -104,7 +120,7 @@ private void swapItems(List<ISortableModel> oldItems, List<ISortableModel> newIt
104
120
}
105
121
106
122
private void swapItems (List <List <ISortableModel >> oldItems , List <List <ISortableModel >>
107
- newItems , int column ) {
123
+ newItems , int column , List < ISortableModel > newRowHeader ) {
108
124
109
125
// Find the differences between old cell items and new items.
110
126
final ColumnSortCallback diffCallback = new ColumnSortCallback (oldItems , newItems , column );
@@ -113,6 +129,7 @@ private void swapItems(List<List<ISortableModel>> oldItems, List<List<ISortableM
113
129
114
130
// Set new items without calling notifyCellDataSetChanged method of CellRecyclerViewAdapter
115
131
mCellRecyclerViewAdapter .setItems (newItems , false );
132
+ mRowHeaderRecyclerViewAdapter .setItems (newRowHeader , false );
116
133
117
134
diffResult .dispatchUpdatesTo (mCellRecyclerViewAdapter );
118
135
diffResult .dispatchUpdatesTo (mRowHeaderRecyclerViewAdapter );
0 commit comments