evrencoskun / TableView

TableView is a powerful Android library for displaying complex data structures and rendering tabular data composed of rows, columns and cells.
MIT License
3.14k stars 459 forks source link

Is it possible to clear all sorting and reset to 'original' layout? #207

Closed danielwoolf closed 5 years ago

danielwoolf commented 5 years ago

Firstly, awesome library!

Is it possible to reset the table view to it's original state? i.e. clicking somewhere (like the corner view) to clear any applied sorts and take the table back to the order in which it was first loaded?

danielwoolf commented 5 years ago

Not to worry... I override setAllItems in my adapter to keep a reference to the header and cell Lists and then used this method in an OnClickListener within onCreateCornerView. i.e.

    private List<RowHeader> mRowHeaderList ;
    private List<ColumnHeader> mColumnHeaderList;
    private List<List<Cell>> mCellList;

//......
//......

    @Override
    public void setAllItems(List<ColumnHeader> columnHeaderItems, List<RowHeader> rowHeaderItems, List<List<Cell>>
            cellItems) {
        super.setAllItems(columnHeaderItems,rowHeaderItems, cellItems);
        mColumnHeaderList= columnHeaderItems;
        mRowHeaderList = rowHeaderItems;
        mCellList = cellItems;
    }

and

    @Override
    public View onCreateCornerView() {
        // Get Corner xml layout

        // Get Corner xml layout
        View corner = LayoutInflater.from(context).inflate(R.layout.table_view_corner_layout, null);
        corner.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                //reset all columns to UNSORTED
                for (int i= 0; i < mColumnHeaderItems.size(); i++){
                    getTableView().sortColumn(i, SortState.UNSORTED); }
                //reset adapter
                TableViewAdapter adapter = (TableViewAdapter)(getTableView().getAdapter());
                adapter.setAllItems(mColumnHeaderItems, mRowHeaderList, mCellList);
                adapter.notifyDataSetChanged();
                //clear selection
                //getTableView().getSelectionHandler().clearSelection(); //has bug that leaves header cell still selected
                getTableView().getSelectionHandler().setSelectedColumnPosition(-1);
                getTableView().getSelectionHandler().setSelectedRowPosition(-1);
                //goto top row
                getTableView().scrollToRowPosition(0);

            }

        });

        return corner;
    }