Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Table grows when sorting within HorizontalScrollView #7

Closed
Luparion opened this issue Dec 2, 2015 · 3 comments
Closed

Table grows when sorting within HorizontalScrollView #7

Luparion opened this issue Dec 2, 2015 · 3 comments
Assignees
Labels

Comments

@Luparion
Copy link

Luparion commented Dec 2, 2015

Hello Ingo,

I really enjoy using your SortableTableView for my app, it's a really great library. Unfortunately, there is one problem that I have with it: When I use a SortableTableView inside a HorizontalScrollView, then each time I tab a table header to sort the table, the table grows a bit wider. To recreate this you can use your sample project in your repository and just put the View into a HorizontalScrollView. The resulting main_activity.xml looks as follows:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                xmlns:custom="http://schemas.android.com/apk/res-auto"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:context="de.codecrafters.tableviewexample.MainActivity">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/primary"
        custom:title="@string/title_activity_main"
        custom:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

    <android.widget.HorizontalScrollView
        android:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <de.codecrafters.tableviewexample.SortableCarTableView
            android:id="@+id/tableView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@id/toolbar"
            custom:columnCount="4"
            custom:headerElevation="10"
            custom:headerColor="@color/primary" />

    </android.widget.HorizontalScrollView>

</RelativeLayout>

Is this a bug or is this intended behavior? If it is the latter, can you please tell me how I can prevent the table from growing?

Best Regards,
Luparion

@ISchwarz23 ISchwarz23 added the bug label Jan 6, 2016
@ISchwarz23 ISchwarz23 self-assigned this Jan 6, 2016
@ISchwarz23
Copy link
Owner

Hi Luparion,
I'm glad to hear that you like to use my library. Please tell other developers about it, so they can improve and speed up their app development.
Your issue description was very detailed and I was able to reproduce this issue very easy. Also thanks for that! Because of that a was able to fix the issue for the example you have given. Please update your dependency to the latest version (0.9.6) and tell me, if this has really fixed the issue for you.
I'm looking forward to your feedback :)
Best Regards,
Ingo

@Luparion
Copy link
Author

Hello Ingo,

I showed my project manager you library and he liked it a lot. He only disliked this growing of the columns that this issue describes.

Unfortunately, your fix introduced a new bug. When I now change the layout to landscape, the app crashes with the following exception:

01-21 22:16:14.185 18086-18086/de.codecrafters.tableviewexample E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                  Process: de.codecrafters.tableviewexample, PID: 18086
                                                                                  java.lang.RuntimeException: Unable to start activity ComponentInfo{de.codecrafters.tableviewexample/de.codecrafters.tableviewexample.MainActivity}: java.lang.IllegalArgumentException: Wrong state class, expecting View State but received class android.widget.AbsListView$SavedState instead. This usually happens when two views of different type have the same id in the same hierarchy. This view's id is id/tableView. Make sure other views do not use the same id.
                                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2808)
                                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2873)
                                                                                      at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4605)
                                                                                      at android.app.ActivityThread.access$1000(ActivityThread.java:181)
                                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488)
                                                                                      at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                      at android.os.Looper.loop(Looper.java:145)
                                                                                      at android.app.ActivityThread.main(ActivityThread.java:6145)
                                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                                      at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
                                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
                                                                                   Caused by: java.lang.IllegalArgumentException: Wrong state class, expecting View State but received class android.widget.AbsListView$SavedState instead. This usually happens when two views of different type have the same id in the same hierarchy. This view's id is id/tableView. Make sure other views do not use the same id.
                                                                                      at android.view.View.onRestoreInstanceState(View.java:14779)
                                                                                      at android.view.View.dispatchRestoreInstanceState(View.java:14755)
                                                                                      at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3188)
                                                                                      at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3194)
                                                                                      at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3194)
                                                                                      at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3194)
                                                                                      at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3194)
                                                                                      at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3194)
                                                                                      at android.view.View.restoreHierarchyState(View.java:14733)
                                                                                      at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:2258)
                                                                                      at android.app.Activity.onRestoreInstanceState(Activity.java:1097)
                                                                                      at android.app.Activity.performRestoreInstanceState(Activity.java:1042)
                                                                                      at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1175)
                                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2781)
                                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2873) 
                                                                                      at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4605) 
                                                                                      at android.app.ActivityThread.access$1000(ActivityThread.java:181) 
                                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488) 
                                                                                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                      at android.os.Looper.loop(Looper.java:145) 
                                                                                      at android.app.ActivityThread.main(ActivityThread.java:6145) 
                                                                                      at java.lang.reflect.Method.invoke(Native Method) 
                                                                                      at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
                                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

The code is exactly the same as in the original description of this issue. I only switched to the newest version of your library.

Can you please look into this?

Best Regards,
Luparion

Edit: See issue #12 .

@ISchwarz23 ISchwarz23 reopened this Jan 25, 2016
@ISchwarz23
Copy link
Owner

Thanks for the response. See the new version of the table view (v1.0.0). This should fix the issue ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants