Skip to content

Commit 3681353

Browse files
author
Cedric Ferry
committed
Merge branch 'master' into feature/multiSelectionSupport
2 parents 3389d35 + ec3875e commit 3681353

23 files changed

+414
-98
lines changed

README.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,19 @@ Setting data using our TableView adapter like this;
396396
rowPosition) {
397397
// Do what you want.
398398
}
399+
400+
/**
401+
* Called when user long press any cell item.
402+
*
403+
* @param cellView : Long Pressed Cell ViewHolder.
404+
* @param column : X (Column) position of Long Pressed Cell item.
405+
* @param row : Y (Row) position of Long Pressed Cell item.
406+
*/
407+
@Override
408+
public void onCellLongPressed(@NonNull RecyclerView.ViewHolder cellView, int column, int row) {
409+
// Do What you want
410+
showToast("Cell " + column + " " + row + " has been long pressed.");
411+
}
399412

400413
/**
401414
* Called when user click any column header item.
@@ -433,8 +446,7 @@ Setting data using our TableView adapter like this;
433446
rowPosition) {
434447
// Do what you want.
435448

436-
}
437-
449+
}
438450

439451
/**
440452
* Called when user click any Row Header item.
@@ -639,4 +651,4 @@ scrollToRowPosition(int row)
639651
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
640652
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
641653
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
642-
SOFTWARE.
654+
SOFTWARE.

app/src/main/java/com/evrencoskun/tableviewsample/MainActivity.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ protected void onCreate(Bundle savedInstanceState) {
4444
setContentView(R.layout.activity_main);
4545

4646
mainFragment = new MainFragment();
47+
48+
View tableControls = findViewById(R.id.table_controls);
4749
searchField = findViewById(R.id.query_string);
4850
moodFilter = findViewById(R.id.mood_spinner);
4951
genderFilter = findViewById(R.id.gender_spinner);
@@ -54,14 +56,19 @@ protected void onCreate(Bundle savedInstanceState) {
5456
pageNumberField = findViewById(R.id.page_number_text);
5557
tablePaginationDetails = findViewById(R.id.table_details);
5658

57-
searchField.addTextChangedListener(onSearchTextChange);
58-
moodFilter.setOnItemSelectedListener(onMoodSelectedListener);
59-
genderFilter.setOnItemSelectedListener(onGenderSelectedListener);
60-
itemsPerPage.setOnItemSelectedListener(onItemsPerPageSelectedListener);
61-
62-
previousButton.setOnClickListener(onPreviousPageButtonClicked);
63-
nextButton.setOnClickListener(onNextPageButtonClicked);
64-
pageNumberField.addTextChangedListener(onPageTextChanged);
59+
if(mainFragment.isPaginationEnabled()) {
60+
tableControls.setVisibility(View.VISIBLE);
61+
searchField.addTextChangedListener(onSearchTextChange);
62+
moodFilter.setOnItemSelectedListener(onMoodSelectedListener);
63+
genderFilter.setOnItemSelectedListener(onGenderSelectedListener);
64+
itemsPerPage.setOnItemSelectedListener(onItemsPerPageSelectedListener);
65+
66+
previousButton.setOnClickListener(onPreviousPageButtonClicked);
67+
nextButton.setOnClickListener(onNextPageButtonClicked);
68+
pageNumberField.addTextChangedListener(onPageTextChanged);
69+
} else {
70+
tableControls.setVisibility(View.GONE);
71+
}
6572

6673
if (savedInstanceState == null) {
6774
getSupportFragmentManager().beginTransaction().add(R.id.activity_container,

app/src/main/java/com/evrencoskun/tableviewsample/MainFragment.java

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,12 @@ public class MainFragment extends Fragment {
7171
public static final int BOY = 0;
7272
public static final int GIRL = 1;
7373

74+
private boolean paginationEnabled = false;
75+
76+
public boolean isPaginationEnabled() {
77+
return paginationEnabled;
78+
}
79+
7480
public MainFragment() {
7581
// Required empty public constructor
7682
}
@@ -95,12 +101,18 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
95101
mTableFilter = new Filter(mTableView); // Create an instance of a Filter and pass the
96102
// created TableView.
97103

98-
// Create an instance for the TableView pagination and pass the created TableView.
99-
mPagination = new Pagination(mTableView);
100104

101-
// Sets the pagination listener of the TableView pagination to handle
102-
// pagination actions. See onTableViewPageTurnedListener variable declaration below.
103-
mPagination.setOnTableViewPageTurnedListener(onTableViewPageTurnedListener);
105+
if(paginationEnabled) {
106+
mTableFilter = new Filter(mTableView); // Create an instance of a Filter and pass the
107+
// created TableView.
108+
109+
// Create an instance for the TableView pagination and pass the created TableView.
110+
mPagination = new Pagination(mTableView);
111+
112+
// Sets the pagination listener of the TableView pagination to handle
113+
// pagination actions. See onTableViewPageTurnedListener variable declaration below.
114+
mPagination.setOnTableViewPageTurnedListener(onTableViewPageTurnedListener);
115+
}
104116
fragment_container.addView(mTableView);
105117

106118
loadData();
@@ -114,6 +126,9 @@ private TableView createTableView() {
114126
mTableViewAdapter = new TableViewAdapter(getContext());
115127
tableView.setAdapter(mTableViewAdapter);
116128

129+
// Disable shadow
130+
//tableView.getSelectionHandler().setShadowEnabled(false);
131+
117132
// Set layout params
118133
FrameLayout.LayoutParams tlp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams
119134
.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);

app/src/main/java/com/evrencoskun/tableviewsample/tableview/TableViewAdapter.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@
1919

2020
import android.content.Context;
2121
import android.support.v7.widget.RecyclerView;
22+
import android.util.Log;
2223
import android.view.LayoutInflater;
2324
import android.view.View;
2425
import android.view.ViewGroup;
2526

2627
import com.evrencoskun.tableview.adapter.AbstractTableAdapter;
2728
import com.evrencoskun.tableview.adapter.recyclerview.holder.AbstractViewHolder;
29+
import com.evrencoskun.tableview.sort.SortState;
2830
import com.evrencoskun.tableviewsample.MainFragment;
2931
import com.evrencoskun.tableviewsample.R;
3032
import com.evrencoskun.tableviewsample.tableview.holder.CellViewHolder;
@@ -225,7 +227,21 @@ public void onBindRowHeaderViewHolder(AbstractViewHolder holder, Object rowHeade
225227
@Override
226228
public View onCreateCornerView() {
227229
// Get Corner xml layout
228-
return LayoutInflater.from(mContext).inflate(R.layout.table_view_corner_layout, null);
230+
View corner = LayoutInflater.from(mContext).inflate(R.layout.table_view_corner_layout, null);
231+
corner.setOnClickListener(new View.OnClickListener() {
232+
@Override
233+
public void onClick(View view) {
234+
SortState sortState = TableViewAdapter.this.getTableView().getRowHeaderSortingStatus();
235+
if(sortState != SortState.ASCENDING) {
236+
Log.d("TableViewAdapter", "Order Ascending");
237+
TableViewAdapter.this.getTableView().sortRowHeader(SortState.ASCENDING);
238+
} else {
239+
Log.d("TableViewAdapter", "Order Descending");
240+
TableViewAdapter.this.getTableView().sortRowHeader(SortState.DESCENDING);
241+
}
242+
}
243+
});
244+
return corner;
229245
}
230246

231247
@Override

app/src/main/java/com/evrencoskun/tableviewsample/tableview/TableViewListener.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,19 @@ public void onCellClicked(@NonNull RecyclerView.ViewHolder cellView, int column,
5656
showToast("Cell " + column + " " + row + " has been clicked.");
5757
}
5858

59+
/**
60+
* Called when user long press any cell item.
61+
*
62+
* @param cellView : Long Pressed Cell ViewHolder.
63+
* @param column : X (Column) position of Long Pressed Cell item.
64+
* @param row : Y (Row) position of Long Pressed Cell item.
65+
*/
66+
@Override
67+
public void onCellLongPressed(@NonNull RecyclerView.ViewHolder cellView, int column, int row) {
68+
// Do What you want
69+
showToast("Cell " + column + " " + row + " has been long pressed.");
70+
}
71+
5972
/**
6073
* Called when user click any column header item.
6174
*
@@ -69,6 +82,12 @@ public void onColumnHeaderClicked(@NonNull RecyclerView.ViewHolder columnHeaderV
6982
showToast("Column header " + column + " has been clicked.");
7083
}
7184

85+
/**
86+
* Called when user long press any column header item.
87+
*
88+
* @param columnHeaderView : Long Pressed Column Header ViewHolder.
89+
* @param column : X (Column) position of Long Pressed Column Header item.
90+
*/
7291
@Override
7392
public void onColumnHeaderLongPressed(@NonNull RecyclerView.ViewHolder columnHeaderView, int
7493
column) {
@@ -96,6 +115,12 @@ public void onRowHeaderClicked(@NonNull RecyclerView.ViewHolder rowHeaderView, i
96115
showToast("Row header " + row + " has been clicked.");
97116
}
98117

118+
/**
119+
* Called when user long press any row header item.
120+
*
121+
* @param rowHeaderView : Long Pressed Row Header ViewHolder.
122+
* @param row : Y (Row) position of Long Pressed Row Header item.
123+
*/
99124
@Override
100125
public void onRowHeaderLongPressed(@NonNull RecyclerView.ViewHolder rowHeaderView, int row) {
101126

app/src/main/java/com/evrencoskun/tableviewsample/tableview/holder/ColumnHeaderViewHolder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ private void controlSortState(SortState sortState) {
127127
column_header_sortButton.setVisibility(View.VISIBLE);
128128
column_header_sortButton.setImageDrawable(arrow_up);
129129
} else {
130-
column_header_sortButton.setVisibility(View.GONE);
130+
column_header_sortButton.setVisibility(View.INVISIBLE);
131131
}
132132
}
133133
}

app/src/main/res/layout/table_view_column_header_layout.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
android:layout_marginLeft="4dp"
6161
android:background="@android:color/transparent"
6262
android:paddingRight="-5dp"
63-
android:visibility="gone"
63+
android:visibility="invisible"
6464
app:srcCompat="@drawable/ic_down"/>
6565
</LinearLayout>
6666

tableview/src/main/java/com/evrencoskun/tableview/ITableView.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ public interface ITableView {
7878

7979
SortState getSortingStatus(int column);
8080

81+
SortState getRowHeaderSortingStatus();
82+
8183
void scrollToColumnPosition(int column);
8284

8385
void scrollToRowPosition(int row);
@@ -110,6 +112,8 @@ public interface ITableView {
110112

111113
void sortColumn(int columnPosition, SortState sortState);
112114

115+
void sortRowHeader(SortState sortState);
116+
113117
void remeasureColumnWidth(int column);
114118

115119
AbstractTableAdapter getAdapter();

tableview/src/main/java/com/evrencoskun/tableview/TableView.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,12 @@ public void sortColumn(int columnPosition, SortState sortState) {
434434
mColumnSortHandler.sort(columnPosition, sortState);
435435
}
436436

437+
@Override
438+
public void sortRowHeader(SortState sortState) {
439+
mIsSortable = true;
440+
mColumnSortHandler.sortByRowHeader(sortState);
441+
}
442+
437443
@Override
438444
public void remeasureColumnWidth(int column) {
439445
// Remove calculated width value to be ready for recalculation.
@@ -462,6 +468,11 @@ public SortState getSortingStatus(int column) {
462468
return mColumnSortHandler.getSortingStatus(column);
463469
}
464470

471+
@Override
472+
public SortState getRowHeaderSortingStatus() {
473+
return mColumnSortHandler.getRowHeaderSortingStatus();
474+
}
475+
465476
@Override
466477
public void scrollToColumnPosition(int column) {
467478
mScrollHandler.scrollToColumnPosition(column);

tableview/src/main/java/com/evrencoskun/tableview/adapter/AbstractTableAdapter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,9 @@ public void setAllItems(List<CH> columnHeaderItems, List<RH> rowHeaderItems, Lis
134134
}
135135
}
136136

137+
public View getCornerView() {
138+
return mCornerView;
139+
}
137140

138141
public ColumnHeaderRecyclerViewAdapter getColumnHeaderRecyclerViewAdapter() {
139142
return mColumnHeaderRecyclerViewAdapter;

0 commit comments

Comments
 (0)