Giter Site home page Giter Site logo

evrencoskun / tableview Goto Github PK

View Code? Open in Web Editor NEW
3.1K 76.0 448.0 49.63 MB

TableView is a powerful Android library for displaying complex data structures and rendering tabular data composed of rows, columns and cells.

License: MIT License

Java 100.00%
tableview android recyclerview android-library custom-view material-design gridview datagrid datatable viewholder

tableview's People

Contributors

andhie avatar cstarner avatar dhruv1110 avatar evrencoskun avatar jeremy-ingenuity avatar lucasnlm avatar lupaulus avatar mgaetan89 avatar sgallego avatar sonique6784 avatar swissquote-gmu avatar utsavdotpro avatar vicmns avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tableview's Issues

Best way to implement Row Toggle Visibility

Hello,

Firstly let me thank you for putting together this lovely example. I've been trying a lot of options with lot of different approaches none of them work as smooth as your approach.

Once extension to current example is I wanted to be able toggle visibility of the rows. What would be the best way of doing it. One solution I've thought about is is modifying "TableViewAdapter" to have a hashmap of hiddenRows which is a lookup of Integer {corresponding to row indicies}. And then use setVisibility on respective sections of onBindCellViewHolder and onBindRowHeaderViewHolder. This works at theoretical level, but it chunks/truncates random row headers. Can you suggest what would be the approach you'd take on this one?

Thank you once again.

Can't create any cells

With my Code i can create the Corner, Column Header and Row header however I can't create the cells. The onCreateCellViewHolder won't be called.
My Layouts and Holders are the same as in the sample app.

My Adapter:
`public class TVAdapterTimetable extends AbstractTableAdapter<ColumnHeader, RowHeader, Cell> {

public TVAdapterTimetable(Context context) {
    super(context);

}

@Override
public RecyclerView.ViewHolder onCreateCellViewHolder(ViewGroup parent, int viewType) {
    System.out.println("Create Cell View Holder...");

    // Get cell xml layout
    View layout = LayoutInflater.from(mContext).inflate(R.layout.table_view_cell_layout,
            parent, false);

    // Create a Custom ViewHolder for a Cell item.
    return new CellViewHolder(layout);
}

@Override
public void onBindCellViewHolder(AbstractViewHolder holder, Object cellItemModel, int
        columnPosition, int rowPosition) {

    Cell cell = (Cell) cellItemModel;

    System.out.println("Set Attributes for the Cell");

    // Get the holder to update cell item text
    CellViewHolder viewHolder = (CellViewHolder) holder;
    viewHolder.cell_textview.setText(cell.getData().toString());

    // If your TableView should have auto resize for cells & columns.
    // Then you should consider the below lines. Otherwise, you can ignore them.

    // It is necessary to remeasure itself.
    viewHolder.itemView.getLayoutParams().width = LinearLayout.LayoutParams.WRAP_CONTENT;
    viewHolder.cell_textview.requestLayout();
}

@Override
public RecyclerView.ViewHolder onCreateColumnHeaderViewHolder(ViewGroup parent, int viewType) {

    System.out.println("Create ColumnHeader View Holder...");

    // Get Column Header xml Layout
    View layout = LayoutInflater.from(mContext).inflate(R.layout
            .table_view_column_header_layout, parent, false);

    // Create a ColumnHeader ViewHolder
    return new ColumnHeaderViewHolder(layout, getTableView());
}

@Override
public void onBindColumnHeaderViewHolder(AbstractViewHolder holder, Object columnHeaderItemModel, int
        position) {
    ColumnHeader columnHeader = (ColumnHeader) columnHeaderItemModel;

    // Get the holder to update cell item text
    ColumnHeaderViewHolder columnHeaderViewHolder = (ColumnHeaderViewHolder) holder;
    columnHeaderViewHolder.column_header_textview.setText(columnHeader.getData().toString());

    // If your TableView should have auto resize for cells & columns.
    // Then you should consider the below lines. Otherwise, you can ignore them.

    // It is necessary to remeasure itself.
    columnHeaderViewHolder.column_header_container.getLayoutParams().width = LinearLayout
            .LayoutParams.WRAP_CONTENT;
    columnHeaderViewHolder.column_header_textview.requestLayout();
}

@Override
public RecyclerView.ViewHolder onCreateRowHeaderViewHolder(ViewGroup parent, int viewType) {

    // Get Row Header xml Layout
    View layout = LayoutInflater.from(mContext).inflate(R.layout
            .table_view_row_header_layout, parent, false);

    // Create a Row Header ViewHolder
    return new RowHeaderViewHolder(layout);
}

@Override
public void onBindRowHeaderViewHolder(AbstractViewHolder holder, Object rowHeaderItemModel, int
        position) {
    RowHeader rowHeader = (RowHeader) rowHeaderItemModel;

    // Get the holder to update row header item text
    RowHeaderViewHolder rowHeaderViewHolder = (RowHeaderViewHolder) holder;
    rowHeaderViewHolder.row_header_textview.setText(rowHeader.getData().toString());
}


@Override
public View onCreateCornerView() {
    // Get Corner xml layout
    return LayoutInflater.from(mContext).inflate(R.layout.table_view_corner_layout, null);
}

@Override
public int getColumnHeaderItemViewType(int columnPosition) {
    // The unique ID for this type of column header item
    // If you have different items for Cell View by X (Column) position,
    // then you should fill this method to be able create different
    // type of CellViewHolder on "onCreateCellViewHolder"
    return 0;
}

@Override
public int getRowHeaderItemViewType(int rowPosition) {
    // The unique ID for this type of row header item
    // If you have different items for Row Header View by Y (Row) position,
    // then you should fill this method to be able create different
    // type of RowHeaderViewHolder on "onCreateRowHeaderViewHolder"
    return 0;
}

@Override
public int getCellItemViewType(int columnPosition) {
    // The unique ID for this type of cell item
    // If you have different items for Cell View by X (Column) position,
    // then you should fill this method to be able create different
    // type of CellViewHolder on "onCreateCellViewHolder"
    return 0;
}

}
`

There is no "Create Cell View Holder..." and i always get this message:
02-28 16:34:02.954 2676-2676/de.tk.annapp W/View: requestLayout() improperly called by com.evrencoskun.tableview.adapter.recyclerview.CellRecyclerView{6b3989d VFED..... ......I. 0,98-0,98 #62} during layout: running second layout pass

Hide columns

Is there any method available to hide columns?

TableView cell items are garbled

Hi again, this issue is completely unrelated to any extended feature (row/column hiding/showing, scrollingTo row/column, sorting, filtering or pagination) of the TableView. This happens when the TableView is scrolled too fast to the right. The data of cells can all be strings or in my case, there are cells that displays a drawable.

Notes:

  • scrolling to the right causes the issue described here and in the preview below
  • scrolling down and going back up will restore/fix the views and displays the data correctly

One thing I can suggest is to use setItemViewCacheSize(int size) method of the RecyclerView for the data cells to preserve the layout and data of "offscreen views". The size to be set should be the number of items in the adapter.
Once again, no pressure, take your time man. I just want to help in improving your library.

Support API below 21

I think for support widely Android devices it will be very great to manipulate or extends your beautiful ,new and useful table view to support API+15, and as question ,Is it in your plan and if yes when?

How to sort complete dataset when paging is enabled?

The sort functionality works great but when paging is enabled, only the items of the selected page are sorted when you sort a column but sometimes a user might want to sort all items of that column. Is this possible right now?

Thanks.

How to remove the corner layout and row headers?

As of now i have to provide the tableView a corner layout, and row headers which i don't need in some cases. I just want my column headers only which i can populate from my datasets. Can this be done or is there any way to hide the row headers and corner layout ?

Thanks.

NullPointerException on CellRecyclerView.getAdapter()

On version 0.8.5.1 this issue was not, but when I updated library version to 0.8.5.5 I had encountered this problem.

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.v7.widget.RecyclerView$Adapter com.evrencoskun.tableview.adapter.recyclerview.CellRecyclerView.getAdapter()' on a null object reference
at com.evrencoskun.tableview.adapter.recyclerview.CellRecyclerViewAdapter.notifyCellDataSetChanged(CellRecyclerViewAdapter.java:173)
at com.evrencoskun.tableview.adapter.AbstractTableAdapter.notifyDataSetChanged(AbstractTableAdapter.java:232)

Çoklu seçim

Merhaba,

Tableview projenizde çoklu seçim var mıdır acaba? yada yapılabilir mi?

Pagination feature

Hi I would like to share this feature that I am currently working on for the TableView which is pagination, currently the pagination works fine for basic data loading, but I still continue to fix conflicting issues with sorting and filtering.

NOTES:

  • I added a Listener interface for the AbstractTableAdapter which notifies when any changes on row, column and cell items occurs. I will also update the filtering implementation to use the listener instead of storing the original data into another class. Don't worry, I didn't change any of your code/implementation of the TableView, I only added extensions.
  • I will not submit a PR yet unless sorting and filtering issues are resolved.

Functional:

  • Pagination on standalone data loading, meaning dataset is not modified yet by sorting or filtering.
  • Go to page functionality.
  • Loading next and previous pages.
  • Loading number of items per page which can be set.

Bugs:

  • Sorting and filtering conflicts.
  • No retention of sorting and filtering on pagination actions, any filter or sorting is lost on page changing.
  • Filtering only applies to current page.
  • Sorting only applies to current page.
  • Many more...

Performance issue

I was trying you demo app and when i scroll table view vertically it judders (it doesn't move smoothly) when i try to get to bottom of table really quickly. I tried using setHasFixedWidth() but it didnt help. Is this known issue ?

NullPointerException on click on empty table

We are developing new app(not released yet)
While searching found TableView and it is very interesting and matching our usecase.

While testing with TableView
We are getting NPE when we try to tap on empty table for second time.

E/RecyclerView: No adapter attached; skipping layout
I/View: Key up dispatch to android.support.v7.widget.AppCompatEditText{8e559f9 VFED..CL. .F...... 0,0-166,140 #7f0900f4 app:id/registered_farmer_id}, event = KeyEvent { action=ACTION_UP, keyCode=KEYCODE_BACK, scanCode=0, metaState=0, flags=0x68, repeatCount=0, eventTime=475379957, downTime=475379866, deviceId=-1, source=0x101 }
E/CellRecyclerView: mIsVerticalScrollListenerRemoved has been tried to remove itself before add new one
E/CellRecyclerView: mIsVerticalScrollListenerRemoved has been tried to remove itself before add new one
E/InputEventReceiver: Exception dispatching input event.
E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.v7.widget.RecyclerView$ViewHolder com.evrencoskun.tableview.adapter.recyclerview.CellRecyclerView.findViewHolderForAdapterPosition(int)' on a null object reference
at com.evrencoskun.tableview.layoutmanager.CellLayoutManager.getVisibleCellViewsByColumnPosition(CellLayoutManager.java:432)
at com.evrencoskun.tableview.handler.SelectionHandler.changeVisibleCellViewsBackgroundForColumn(SelectionHandler.java:320)
at com.evrencoskun.tableview.handler.SelectionHandler.selectedColumnHeader(SelectionHandler.java:221)
at com.evrencoskun.tableview.handler.SelectionHandler.setSelectedColumnPosition(SelectionHandler.java:75)
at com.evrencoskun.tableview.listener.itemclick.ColumnHeaderRecyclerViewItemClickListener.clickAction(ColumnHeaderRecyclerViewItemClickListener.java:54)
at com.evrencoskun.tableview.listener.itemclick.AbstractItemClickListener.onInterceptTouchEvent(AbstractItemClickListener.java:76)
at android.support.v7.widget.RecyclerView.dispatchOnItemTouch(RecyclerView.java:2771)
at android.support.v7.widget.RecyclerView.onTouchEvent(RecyclerView.java:2899)
at android.view.View.dispatchTouchEvent(View.java:9483)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2665)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2309)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2671)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2323)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2671)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2323)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2671)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2323)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2671)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2323)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2671)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2323)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2671)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2323)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2671)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2323)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2671)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2323)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2476)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1777)
at android.app.Activity.dispatchTouchEvent(Activity.java:2818)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:68)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2437)
at android.view.View.dispatchPointerEvent(View.java:9714)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4861)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4703)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4208)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4261)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4227)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4373)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4235)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4430)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4208)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4261)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4227)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4235)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4208)
at android.view.Vie

java.lang.ArrayIndexOutOfBoundsException: length=15; index=15

When the column number exceeds 15, am getting below given error. Why ?

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.glowsis.glowmetric, PID: 18632 java.lang.ArrayIndexOutOfBoundsException: length=15; index=15 at com.theah64.retrokit.utils.tableview.holder.CellViewHolder.setCellModel(CellViewHolder.java:31) at com.theah64.retrokit.utils.tableview.BaseTableAdapter.onBindCellViewHolder(BaseTableAdapter.java:52) at com.evrencoskun.tableview.adapter.recyclerview.CellRowRecyclerViewAdapter.onBindViewHolder(CellRowRecyclerViewAdapter.java:48) at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6508) at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6541) at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5484) at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5750) at android.support.v7.widget.GapWorker.prefetchPositionWithDeadline(GapWorker.java:285) at android.support.v7.widget.GapWorker.flushTaskWithDeadline(GapWorker.java:342) at android.support.v7.widget.GapWorker.flushTasksWithDeadline(GapWorker.java:358) at android.support.v7.widget.GapWorker.prefetch(GapWorker.java:365) at android.support.v7.widget.GapWorker.run(GapWorker.java:396) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Scroll TableView programmatically by the desired column position

one question: for your TableView library, how do you scroll to a column say column 20?

Hi @sidharthshah,

It is actually pretty simple. If you checked the source code, you can see TableView occurs from 3 Skilled RecyclerViews.

If you want to scroll horizontally, you can use scrollToPosition method of LayoutManager.

For example:

        int position = 10;

        scrollCell(position);
        scrollColumnHeader(position);

Below helper methods will be on the new version too. For now, you can insert them on your project.

private void scrollCell(int columnPosition) {
        CellLayoutManager cellLayoutManager = tableView.getCellLayoutManager();

        for (int i = cellLayoutManager.findFirstVisibleItemPosition(); i < cellLayoutManager
                .findLastVisibleItemPosition() + 1; i++) {

            ColumnLayoutManager columnLayoutManager = (ColumnLayoutManager) ((RecyclerView)
                    cellLayoutManager.findViewByPosition(i)).getLayoutManager();

            columnLayoutManager.scrollToPosition(columnPosition);
        }
    }

    private void scrollColumnHeader(int columnPosition) {
        tableView.getColumnHeaderLayoutManager().scrollToPosition(columnPosition);
    }

the Column header will shake

I use the TableView in the fragment which was added to the ViewPager,and init the TableView when the fragment is visible(lazy load),when I first scroll the TableView,the Column header will shake(I think it is redraw),how should I do to solve this problem?

Freezing columns?

Hi, will this support column freezing function? Example: like disabling horizontal scrolling on the first column?

Scroll oblique (horizontal and vertical at the same time) and Scroll Performance

I am very appreciate for your hardwork and it is well implemented into my work.

Is there any ways to scroll oblique (horizontal and vertical at the same time), just like below gif

https://raw.githubusercontent.com/Cleveroad/AdaptiveTableLayout/master/images/demo.gif

I found out there is performance issue when scroll to the end , my table is (20 column x 56 row ), the table show some lag until the end, is there any way to adjust the scroll speed just like override "fling" in recycle view like the link below?

https://stackoverflow.com/a/30747742

Fragment içerisinde başka framelayout açılımı ?

Merhabalar,
Buton click olayı ile açılmasını istediğim sayfa bir fragment ve layout kısmında ayrı bir framelayout a sahibim.

Açılan sayfada doldurulması gereken yerler ve ona göre dolan bir grid görseli olacak.

Şimdi yaptığınız tableview yapısında activity sayfasından bir fragment çağırılmış.

Kendi projeme uyarlayamadım çünkü benim bir tane activity sayfam var sonrasındaki sayfa ilerlemelerim fragment ile bunun üzerine yine bir fragment ten başka fragment a geçtiğim sayfamın görselinde grid e ayırdığım kısmın(framelayout) tableview görseli ile açılması için ne yapabilirim?

  • ilk yönlendirmeyi hangi sayfadan verebilirim?(Acticity-Fragment)

Not:Tableview kendi projemde bir grid yapısıdır.

Change Cell Text Color

Your work really perfect. It took a long time for understanding, but the result is excellent.

I have a problem with CellHolder. I want to change cell text color for some situations. But I could not. Where I can change cell text color in your sample project?

Thanks.

The problem with addRowRange

public void addItemRange(int positionStart, int itemCount, List<T> items) {
        if (m_jItemList.size() > positionStart + itemCount && items != null) {
            for (int i = positionStart; i < positionStart + itemCount + 1; i++) {
                if (i != RecyclerView.NO_POSITION) {
                    m_jItemList.add(i, items.get(i));
                }
            }
            notifyItemRangeInserted(positionStart, itemCount);
        }
    }
  1. The source code to add item range.
  2. The list size is never gonna greater than position start + item count +1.
  3. Do u mean m_jItemList.size() >= positionStart?
  4. for (int i = positionStart; i < positionStart + itemCount + 1; i++) {
    and dont add 1 its gonna get null in items if you adding it at the ends of Cells

What i am change is
positionStart is the where to adding the item
itemCount is the total of the New item you want to add,
items is the new list of the item.


 public void addItemRange(int positionStart, int itemCount, List<T> items) {
        if (m_jItemList.size() >= positionStart && items != null) {
            for (int i = positionStart; i < positionStart + itemCount; i++) {
                if (i != RecyclerView.NO_POSITION) {
                    m_jItemList.add(i, items.get(i - positionStart));
                }
            }
            notifyItemRangeInserted(positionStart, itemCount);
        }
    }


Also there is issue with removeRowRange.

    public void deleteItemRange(int positionStart, int itemCount) {
        if (m_jItemList.size() >= positionStart + itemCount) {
            for (int i = positionStart; i < positionStart + itemCount; i++) {
                if (i != RecyclerView.NO_POSITION) {
                    m_jItemList.remove(positionStart);
                }
            }
            notifyItemRangeRemoved(positionStart, itemCount);
        }
    }

Do u think it should be remove the Same position not the i because the List getting smaller. otherwise it gonna out of position

NullPointerException when loading table with empty cell data

Hi!

I encountered following two bugs, when the table has no / empty cell data:

1. the table alignment is not correct

screenshot_1516656046

2. following NullPointerException gets thrown when clicking on columnheader

E/InputEventReceiver: Exception dispatching input event.
E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.v7.widget.RecyclerView$ViewHolder com.evrencoskun.tableview.adapter.recyclerview.CellRecyclerView.findViewHolderForAdapterPosition(int)' on a null object reference
at com.evrencoskun.tableview.layoutmanager.CellLayoutManager.getVisibleCellViewsByColumnPosition(CellLayoutManager.java:417)
at com.evrencoskun.tableview.handler.SelectionHandler.changeVisibleCellViewsBackgroundForColumn(SelectionHandler.java:291)
at com.evrencoskun.tableview.handler.SelectionHandler.selectedColumnHeader(SelectionHandler.java:191)
at com.evrencoskun.tableview.handler.SelectionHandler.setSelectedColumnPosition(SelectionHandler.java:47)
at com.evrencoskun.tableview.listener.itemclick.ColumnHeaderRecyclerViewItemClickListener.clickAction(ColumnHeaderRecyclerViewItemClickListener.java:37)
at com.evrencoskun.tableview.listener.itemclick.AbstractItemClickListener.onInterceptTouchEvent(AbstractItemClickListener.java:45)
at android.support.v7.widget.RecyclerView.dispatchOnItemTouch(RecyclerView.java:2771)
at android.support.v7.widget.RecyclerView.onTouchEvent(RecyclerView.java:2899)
at android.view.View.dispatchTouchEvent(View.java:11776)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2962)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2643)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:448)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1829)
at android.app.Activity.dispatchTouchEvent(Activity.java:3307)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:68)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:410)
at android.view.View.dispatchPointerEvent(View.java:12015)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4795)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4609)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4200)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4166)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4293)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4174)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4350)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147)
at android.view.ViewRootImpl$InputStage.onDeliv

Column header views change background color after going offscreen

Expectation: if table view has setIgnoreSelectionColors(true), all its views should retain their background colors no matter what.

Problem: column header views change their background color permanently after going offscreen

Steps to reproduce:

  1. have a table view with setIgnoreSelectionColors(true);
  2. have enough columns that some are offsreen;
  3. scroll table view left-right
  4. column header views that had been moved offscreen have now changed their background color to default "unselected color" of table view.

Why it happens: onViewDetachedFromWindow handler in ColumnHeaderRecyclerViewAdapter does not check IsIgnoreSelectionColors() setting of its table view when changing view's background color. Result: if a column header ever goes offscreen, its background color is changed permanently to "unselected color".

Suggestion: must view's background color even change on detach? It's getting changed in onViewAttachedToWindow handler already anyway - and with proper IsIgnoreSelectionColors() check, too. Same for its selected status.

how to make it work with CoordinatorLayout

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@color/cell_line_color">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">


        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="200dp"
            app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"
            >

        </FrameLayout>

        <android.support.design.widget.TabLayout
            android:id="@+id/tabLayout"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:background="#ffffff"
            />

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        >

    </android.support.v4.view.ViewPager>

</android.support.design.widget.CoordinatorLayout>

HI,this is my layout file ,I put the TableView on the fragment,and fragment was added to the ViewPager,now I want to hide the FrameLayout which in the CoordinatorLayout,when scroll the TableView,but it is not work .so what should I do to solve this problem?please help me,Thanks you very much!

Cell measurement is not correct

Hi!

First of all...thanks for this great library. I encountered following problem:

When the table contains data with different sizes, the cell measurement is not working correctly.

1. Initial call. Cells have same data size.

screenshot_1516539427

2. After scrolling down to some larger data the view looks like this

screenshot_1516539435

My CellViewHolder:

public class CellViewHolder extends AbstractViewHolder
{
    public final TextView textViewCell;
    public final LinearLayout cellContainer;

    public CellViewHolder(View itemView)
    {
        super(itemView);

        textViewCell = itemView.findViewById(R.id.cell_data);
        cellContainer = itemView.findViewById(R.id.cell_container);
    }

    public void bind(final Cell cell)
    {
        textViewCell.setText(String.valueOf(cell.getData()));

        // If your TableView should have auto resize for cells & columns.
        // Then you should consider the below lines. Otherwise, you can ignore them.

        // It is necessary to remeasure itself.
        cellContainer.getLayoutParams().width = LinearLayout.LayoutParams.WRAP_CONTENT;
        textViewCell.requestLayout();
    }
}

Can you replicate this bug or am i doing something wrong?

Greets

Using different view widgets

Hi! How to use different Views in one table?
In the example below, in Student name column, i want to use TextView, but in Score and Comment i want to use EditText. how to realize this?
image

LISTENER VE GRADLE

1.Öncelikle kütüphane olarak gradle ile projemize ekleyebilir miyiz?
2. Kolonlara ve satırlara click olayını nasıl yapabiliriz?

Auto sizing to full size and setting columns widths manual

Hello,
Thanks for this view. I'm trying to set the column widths so the tableview matching the parent width.

I tried to set the columnheader widths in your example but they are overruled by the cell widths atm. removing the row to set the width at the cell did not work as well.

I think the width of the column header should be the main value. Only when it is set to WRAP_CONTENT it should use the max width of the cells.

What i also love to see is an option that allows the following; By default when the viewtable's layout_width is set to match_parent the last column would be sized to fill the space to the right.
To allow stretching an other column we should introduce a new property named something like "StretchColumn".

Is this easy to implement? I Love to help by i haven't got around yet how everything is working yet.

Problem with the CellViewHolder

Hello,

I'm developing a software where I show a table from a DB. The issue is that i have 16 colums to show, but somehow it crashes when it tries to render the last (15) column, the log says that the length is 15 and size too, but doing the debug i find out that my array it is 16; plus it happens at the CellViewHolderModel and TableAdapter. When i comment the last ColumHeaderModel, works fine. I have no clue what is going on actually... i was trying to debug to understand, but no conclusion yet. I wanted to know if there's a limit of colums or is it a bug?
I'll try to figure it out.

Also, i tried to add a new column on the TableViewSampleApp2 that works with fragments and Web Service. Same, it crashes when reaching column 16.

02-28 17:44:22.748 19899-19899/com.gigex.fitosoft.analizador E/AndroidRuntime: FATAL EXCEPTION: main Process: com.gigex.fitosoft.analizador, PID: 19899 java.lang.ArrayIndexOutOfBoundsException: length=15; index=15 at com.gigex.fitosoft.analizador.TableView.holder.CellViewHolder.setCellModel(CellViewHolder.java:30) at com.gigex.fitosoft.analizador.TableView.MyTableAdapter.onBindCellViewHolder(MyTableAdapter.java:53) at com.evrencoskun.tableview.adapter.recyclerview.CellRowRecyclerViewAdapter.onBindViewHolder(CellRowRecyclerViewAdapter.java:48) at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6508) at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6541) at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5484) at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5750) at android.support.v7.widget.GapWorker.prefetchPositionWithDeadline(GapWorker.java:285) at android.support.v7.widget.GapWorker.flushTaskWithDeadline(GapWorker.java:342) at android.support.v7.widget.GapWorker.flushTasksWithDeadline(GapWorker.java:358) at android.support.v7.widget.GapWorker.prefetch(GapWorker.java:365) at android.support.v7.widget.GapWorker.run(GapWorker.java:396) at android.os.Handler.handleCallback(Handler.java:746) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5443) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

hücra yada satır verisini yakalama?

Merhabalar,

Hücrenin click olayında yada en önemlisi satırın click olayında satırda yer alan hücresel verilerin hepsini birden elde edebildiğimiz bir metot? yada veriyi gösteren bir yöntem var mıdır?

Cell onCellLongPressed

Merhaba, satır ve sütunda bulunan "on..LongPressed" metodu, hücrede aktif değil (yada ben göremedim). Bu konuyu nasıl halledebilirim?

Error:(53, 69) error: cannot find symbol variable m_jContext where C is a type-variable: C extends Object declared in class CellRecyclerViewAdapter

Error:(53, 69) error: cannot find symbol variable m_jContext
where C is a type-variable:
C extends Object declared in class CellRecyclerViewAdapter

////////////////////////////////////////////////////////

Error:(99, 37) error: cannot find symbol variable m_jItemList
where C is a type-variable:
C extends Object declared in class CellRecyclerViewAdapter

TableView'i eklediğmde, Gradle, compile etmiyor

Merhabalar,

Github da bulunan projenizde kütüphaneyi bulamadım projemede ekleyemedim.

Tableview kontrolü projemdeki palette yok.Grid mantığıyla boğuşuyorum bulduğum en iyi proje, bir şekilde adım adım ilerlemek istiyorum.

İlk olarak bir kontrol atayım dedim sonrasında bir kütüphane ihtiyacım mı varki diye araştırmaya koyuldum.Bana yardımcı olabilirseniz sevinirim.

İyi çalışmalar

removeRow can cause java.lang.IndexOutOfBoundsException

Using ITableViewListener I added a delete button for every record in the table that uses the row index to call removeRow().After calling removeRow() though the ITableViewListener doesn't update the indexes of the table.

So for example
if you remove row 1 it will remove row 1, but if you then try to remove the new first row (originally row 2) it will delete the row after (originally row 3).
I image the same issue exists for removeColumn() but i haven't tested it

Fail to sync in Oreo

Gradle file fail to sync when targeting Oreo. Below is my build.gradle file. The error is 'All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 26.1.0, 25.3.1. '

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.evrencoskun.library:tableview:0.8.3'
}

Independent cell width

Hey,

Is it possible to have cells with different widths inside the table with the column headers?

If I don't set column headers then each call can have a different size but once column headers are added the width becomes fixed.

Is it possible to change this behaviour?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.