liaohuqiu / android-gridviewwithheaderandfooter Goto Github PK
View Code? Open in Web Editor NEWA GridView which can addHeaderView and addFooterView
License: Apache License 2.0
A GridView which can addHeaderView and addFooterView
License: Apache License 2.0
I add a header to this grid ,and i set layout_height="wrap_content", but it doesn't work.it fill all space.just like fill_parent
when set the marginTop is zero ,there also a vertical space at the top of the grid view.
the space is about 5dp.
I have a GridView with widgets and inside a group widget the crash occurred
it does not happen all the time. (The same grid gets used for groups and non group views).
Is this released to compile 'in.srain.cube:grid-view-with-header-footer:1.0.12'
Here is my stack trace..
FATAL EXCEPTION: main
java.lang.NullPointerException
at android.widget.GridView.fillUp(GridView.java:311)
at android.widget.GridView.fillGap(GridView.java:199)
at android.widget.AbsListView.trackMotionScroll(AbsListView.java:3422)
at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:2920)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3703)
at java.lang.reflect.Method.invokeNative(Native Method)
01-20 14:26:05.968 10332-10332/za.co.nedsecure.nedbankSMAS.qa E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
at dalvik.system.NativeStart.main(Native Method)
Hi i am using this templete but i have an issue which says
E/InputEventReceiver: Exception dispatching input event.
09-08 09:37:36.749 21393-21393/com.example.dell.MyApplication E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
09-08 09:37:36.753 21393-21393/com.example.dell.MyApplication E/MessageQueue-JNI: java.lang.ArrayIndexOutOfBoundsException:
Here is my Complete Logcat :-
E/InputEventReceiver: Exception dispatching input event. 09-08 09:37:36.749 21393-21393/com.example.dell.MyApplication E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback 09-08 09:37:36.753 21393-21393/com.example.dell.MyApplication E/MessageQueue-JNI: java.lang.ArrayIndexOutOfBoundsException: index=6 at com.example.dell.MyApplication.GridViewWithHeaderAndFooter$HeaderViewGridAdapter.getView(GridViewWithHeaderAndFooter.java:738) at android.widget.AbsListView.obtainView(AbsListView.java:2255) at android.widget.GridView.makeAndAddView(GridView.java:1345) at android.widget.GridView.makeRow(GridView.java:345) at android.widget.GridView.fillDown(GridView.java:287) at android.widget.GridView.fillGap(GridView.java:247) at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5143) at android.widget.AbsListView.onGenericMotionEvent(AbsListView.java:3811) at android.view.View.dispatchGenericMotionEventInternal(View.java:7801) at android.view.View.dispatchGenericMotionEvent(View.java:7782) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchGenericMotionEvent(PhoneWindow.java:2076) at com.android.internal.policy.impl.PhoneWindow.superDispatchGenericMotionEvent(PhoneWindow.java:1525) at android.app.Activity.dispatchGenericMotionEvent(Activity.java:2494) at android.support.v7.view.WindowCallbackWrapper.dispatchGenericMotionEvent(WindowCallbackWrapper.java:70) at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchGenericMotionEvent(PhoneWindow.java:2030) at android.view.View.dispatchPointerEvent(View.java:7888) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3947) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3826) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3518) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3575) at android.view.ViewRootImpl$InputStage.delive 09-08 09:37:36.753 21393-21393/com.example.dell.MyApplication D/AndroidRuntime: Shutting down VM 09-08 09:37:36.753 21393-21393/com.example.dell.MyApplication W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xa4c96b20) 09-08 09:37:36.765 21393-21393/com.example.dell.MyApplication E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.dell.MyApplication, PID: 21393 java.lang.ArrayIndexOutOfBoundsException: index=6 at com.example.dell.MyApplication.GridViewWithHeaderAndFooter$HeaderViewGridAdapter.getView(GridViewWithHeaderAndFooter.java:738) at android.widget.AbsListView.obtainView(AbsListView.java:2255) at android.widget.GridView.makeAndAddView(GridView.java:1345) at android.widget.GridView.makeRow(GridView.java:345) at android.widget.GridView.fillDown(GridView.java:287) at android.widget.GridView.fillGap(GridView.java:247) at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5143) at android.widget.AbsListView.onGenericMotionEvent(AbsListView.java:3811) at android.view.View.dispatchGenericMotionEventInternal(View.java:7801) at android.view.View.dispatchGenericMotionEvent(View.java:7782) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824) at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777) at android.view.View.dispatchGenericMotionEvent(View.java:7775) at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchGenericMotionEvent(PhoneWindow.java:2076) at com.android.internal.policy.impl.PhoneWindow.superDispatchGenericMotionEvent(PhoneWindow.java:1525) at android.app.Activity.dispatchGenericMotionEvent(Activity.java:2494) at android.support.v7.view.WindowCallbackWrapper.dispatchGenericMotionEvent(WindowCallbackWrapper.java:70) at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchGenericMotionEvent(PhoneWindow.java:2030) at android.view.View.dispatchPointerEvent(View.java:7888) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3947) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3826) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3518) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419) at android.view.ViewRootImpl$AsyncInputStage.apply(V
Thanks in Advance...!!!
和轮播图控件一起使用没动画效果
When the header view's height is changed after the header has been added to the grid, it doesn't actually change the height of the header. The case I am using is that there is some text with only some of it displayed in the header, and when the user clicks on it in enlarges to display everything. I do this by increasing the max lines of the TextView. When the header is attached to a ListView, this works fine. When the header is attached to this GridViewWithHeaderAndFoot, the text grows but goes behind the main part of the grid since the header itself stays the exact same height. Any idea where I should start looking to fix this?
scorry it's my problem
It looks like whenever the views in the adapter change their layout onAttachToWindow() is called on the footers. This is problematic when for example using an indeterminate ProgressBar as a footer for infinite scrolling because this keeps reseting the animation on the ProgressBar and looks weird.
比如添加3个header后,12之间,23之间会存在一个间隔,看了下,感觉和 #8 描述的有点像。
first,i invoke addHeadView,then invoke removeHeadView,but when invoking addHeadView again, the app crash
hi @liaohuqiu
I use your lib in my project .all well and good.But i want load more when scroll to gridview bottom.How am I doing?
BTW i add a header and a footer then call the getHeaderViewCount() method return count is 2.I click first item (not header) position is 1 in listview adapter getview method.This seems to be not correct.
Hope for your help.Thanks 😄
in my gridview adding a footer working good , but when I try to add a footer and a header the gridlist height didn't full the screen as before adding the header
in my fragment
gv = (GridViewWithHeaderAndFooter) rootView.findViewById(R.id.gridView1);
gv.addFooterView(footerView);
gv.addHeaderView(headerView);
gv.setAdapter(adapter);
the footer layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="40dp"
android:gravity="center"
android:layout_alignParentBottom="true">
<ProgressBar
style="?android:attr/progressBarStyleInverse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/moreDataProgressbar"
android:layout_gravity="center"
android:layout_marginRight="5dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="loading more profiles"
android:id="@+id/loadingText"
android:textSize="18sp"
android:layout_gravity="center"
android:textColor="#02ad5e"
android:textStyle="bold"/>
</LinearLayout>
</LinearLayout>
the header layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="40dp"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Members"
android:id="@+id/headertext"
android:textSize="18sp"
android:layout_gravity="center"
android:textColor="#02ad5e"
android:textStyle="bold"/>
</LinearLayout>
Hi,
Let's say i have a custom HeaderView. For the adapter, i also have custom view.
my custom HeaderView have 2 textview (txtA & txtB).
how can i change the txtA text from my custom view? I mean from the adapter. I manage to update the grid, but failed to update the txtA from header.
Please advice.
Thanks.
Alfred
We really often get this error in libs :(.
Fatal Exception: java.lang.IndexOutOfBoundsException: Invalid index 118, size is 1
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at in.srain.cube.views.GridViewWithHeaderAndFooter$HeaderViewGridAdapter.isEnabled(GridViewWithHeaderAndFooter.java:624)
at android.widget.AbsListView.onTouchDown(AbsListView.java:5450)
at android.widget.AbsListView.onTouchEvent(AbsListView.java:5356)
at android.view.View.dispatchTouchEvent(View.java:8968)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2698)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2410)
at android.widget.AbsListView.dispatchTouchEvent(AbsListView.java:5303)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2559)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1767)
at android.app.Activity.dispatchTouchEvent(Activity.java:2866)
at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:59)
at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:59)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2520)
at android.view.View.dispatchPointerEvent(View.java:9173)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4706)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4544)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4068)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4121)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4087)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4201)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4095)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4258)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4068)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4121)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4087)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4095)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4068)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6564)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6454)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6425)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6654)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.next(MessageQueue.java:143)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:5938)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
when a fast scroll is made, clean layout.
java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at in.srain.cube.views.GridViewWithHeaderAndFooter$HeaderViewGridAdapter.getView(GridViewWithHeaderAndFooter.java:714)
05-12 10:49:30.335 19743-19743/com.pheth.android E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.mingqihui.android, PID: 19743
java.lang.ArrayIndexOutOfBoundsException: length=4; index=4
at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6588)
at android.widget.GridView.layoutChildren(GridView.java:1256)
at android.widget.AbsListView.onLayout(AbsListView.java:2151)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at com.pheth.android.module.pulltorefresh.view2.PullToRefreshLayout.onLayout(PullToRefreshLayout.java:560)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2086)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1843)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
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:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Empty view not showing if you use addFooter view, no exceptions.
Hi,
I need to set the minHeight of GridViewWithHeaderAndFooter. It does not work like this:
<in.srain.cube.views.GridViewWithHeaderAndFooter
android:id="@+id/categories_grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="600dp"
android:horizontalSpacing="20dip"
android:verticalSpacing="15dip"
android:layout_margin="10dip"
android:stretchMode="columnWidth"
android:layout_gravity="center_horizontal"
android:numColumns="3"
android:scrollbars="none"/>
Any ideas?
vh = (ViewHolder) view.getTag();
当数据正好超过一屏幕的时候,自己定义的Adapter中,使view重用的这句会nullpoint
这个问题依然存在,我关闭的原因是可以通过不addFooterView规避。
java.lang.ClassCastException: in.srain.cube.views.GridViewWithHeaderAndFooter$HeaderViewGridAdapter cannot be cast to android.widget.BaseAdapter
at android.widget.FastScroller.getSectionsFromIndexer(FastScroller.java:879)
at android.widget.FastScroller.getPosFromItemCount(FastScroller.java:1151)
at android.widget.FastScroller.onItemCountChanged(FastScroller.java:457)
at android.widget.AbsListView.onLayout(AbsListView.java:2149)
at android.view.View.layout(View.java:15136)
at android.view.ViewGroup.layout(ViewGroup.java:4862)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515)
at android.widget.FrameLayout.onLayout(FrameLayout.java:450)
at android.view.View.layout(View.java:15136)
at android.view.ViewGroup.layout(ViewGroup.java:4862)
at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1627)
at android.view.View.layout(View.java:15136)
at android.view.ViewGroup.layout(ViewGroup.java:4862)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1888)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1742)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1651)
at android.view.View.layout(View.java:15136)
at android.view.ViewGroup.layout(ViewGroup.java:4862)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1160)
at android.view.View.layout(View.java:15136)
at android.view.ViewGroup.layout(ViewGroup.java:4862)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515)
at android.widget.FrameLayout.onLayout(FrameLayout.java:450)
at android.view.View.layout(View.java:15136)
at android.view.ViewGroup.layout(ViewGroup.java:4862)
at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:435)
at android.view.View.layout(View.java:15136)
at android.view.ViewGroup.layout(ViewGroup.java:4862)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515)
at android.widget.FrameLayout.onLayout(FrameLayout.java:450)
at android.view.View.layout(View.java:15136)
at android.view.ViewGroup.layout(ViewGroup.java:4862)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1888)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1742)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1651)
at android.view.View.layout(View.java:15136)
at android.view.ViewGroup.layout(ViewGroup.java:4862)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515)
at android.widget.FrameLayout.onLayout(FrameLayout.java:450)
at android.view.View.layout(View.java:15136)
at android.view.ViewGroup.layout(ViewGroup.java:4862)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2360)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2066)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1232)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6271)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:788)
at android.view.Choreographer.doCallbacks(Choreographer.java:591)
at android.view.Choreographer.doFrame(Choreographer.java:560)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:774)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5349)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:835)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:651)
at dalvik.system.NativeStart.main(Native Method)
Hi first of all thank you for your efforts, this is an amazing library. so yeah the clicking seems to be off by one row, the actual grid is in the right place but they are actually shifted on top of the header any ideas?
call setColumnNums()
to make sure mColumnNums
setted.
Getting IllegalArgumentException in android 2.3.
"java.lang.IllegalArgumentException: Number of columns must be 1 or more" line number 345
As the title description. But when I add this head to an original ListView, it works perfect. So I think there is maybe something conflict between these two.
this issues founded when my server had error, it didn't send any ressult. So the list add to adapter with size = 0.
如题,有没有什么办法,谢谢了!
It would be nice to be able to get back the ListAdapter
that we provide in setAdapter
. Currently we would have to use something like
(SomeAdapter) ((WrapperListAdapter) getAdapter()).getWrappedAdapter()
which is a bit long. Maybe GridViewWithHeaderAndFooter
could have a new method, getListAdapter
.
Here is my code:
goodsGridView = (GridViewWithHeaderAndFooter) rootView.findViewById(R.id.goods_grid);
LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
goodsFooterView = layoutInflater.inflate(R.layout.good_grid_footer, null);
goodsFooterView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
goodsGridView.addFooterView(goodsFooterView);
为什么我的HeaderView好像是被挤到左边的屏幕外面去了,右边却有大概三分之一显示空白,不知道怎么回事
只有一个Footer的情况下,为什么totalItemCount=2
我用了两台2.3.X的机器测了,都会报错:
11-18 10:34:24.613 1087-1087/com.jidian.android.edo E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.IllegalArgumentException: Number of columns must be 1 or more
at com.jidian.android.edo.ui.widget.HeaderAndFooterGridView$HeaderViewGridAdapter.setNumColumns(HeaderAndFooterGridView.java:350)
at com.jidian.android.edo.ui.widget.HeaderAndFooterGridView.onMeasure(HeaderAndFooterGridView.java:88)
at android.view.View.measure(View.java:8526)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3228)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
at android.view.View.measure(View.java:8526)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3228)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
at android.view.View.measure(View.java:8526)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1451)
at android.view.View.measure(View.java:8526)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
at android.view.View.measure(View.java:8526)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3228)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
at android.view.View.measure(View.java:8526)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3228)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
at android.view.View.measure(View.java:8526)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:581)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:365)
at android.view.View.measure(View.java:8526)
at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:704)
at android.view.View.measure(View.java:8526)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3228)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
at android.view.View.measure(View.java:8526)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3228)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
at android.view.View.measure(View.java:8526)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3228)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
at android.view.View.measure(View.java:8526)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3228)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
at android.view.View.measure(View.java:8526)
at android.view.ViewRoot.performTraversals(ViewRoot.java:902)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1957)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4277)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
看错误应该是读不到有列数
Hello, How i can set autoheight for both items in a row when they content is a different height?
i have grid with 2 cols.
what i want:
(this is pseudo row, because in a fact the text can be large)
if i set fixed item layout height in item.xml then if text is too large users cant see image.
i need something for set row height by max height of two item in a row.
if i set fixed height i may not see image and end part of text:
I use this GridViewWithHeaderAndFooter view in a Android TV project, and in TV project. I found set OnItemSelectedListener not work properly.
When adding ViewPager as header,it occur" android.content.res.Resources$NotFoundException: Unable to find resource ID #0xffffffff"....
我们的项目就是 上面是gridview 下面是gridview,但是需要下拉刷新和上啦加载 ,感觉android pulltoresh岁体验最好的,所以我之前用android pulltoresh加recyclerview的grid头部是可以的,现在 listview也得改成gridview了。
I have attached a click listener but getting incorrect position when a particular grid item is clicked. My code is as follows:
mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Media media = mMedias.get(position);
Intent i = new Intent(getActivity(), MediaDetailActivity.class);
i.putExtra(MediaDetailFragment.EXTRA_MEDIA, media);
startActivity(i);
}
});
Can you tell me where I am going wrong?
I make the footerView as a loadmore view , When I set the footerView visable or gone ,the GridView cann`t adjust its height to match the screen .here is the code:
mGridView = (GridViewWithHeaderAndFooter)inflater.inflate(R.layout.fragment_category_detail, container, false);
mFooterView = new LoadMoreFooterView(mContext);
mGridView.addFooterView(mFooterView);
mGridView.setOnScrollListener(mFooterView);
`mFooterView.setOnLoadMoreListener(this);`
@Override
public void onLoadMore() {
mFooterView.setStatus(LoadMoreFooterView.Status.LOADING);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mFooterView.setStatus(LoadMoreFooterView.Status.GONE);
}
},3500);
}
Hi! Crush on android 2.3.+
can you change
Field numColumns = getClass().getSuperclass().getDeclaredField("mColumnWidth");
on
Field numColumns = GridView.class.getDeclaredField("mColumnWidth");
Hello I use latest version: compile 'in.srain.cube:grid-view-with-header-footer:1.0.12'
I have 4 items on row and many rows (item is clickable and contains included buttons on layout). It works like expected, but not when I'm scrolled on top (it everytime click on Item on position 0). When I scroll a few pixels, it works like expected (click on item show detail, click on buttons in item layout make action).
When I'm on top of gridView (I have just footer, no header) method:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (mOnItemClickListener != null) {
int resPos = position - getHeaderViewCount() * getNumColumnsCompatible();
if (resPos >= 0) {
mOnItemClickListener.onItemClick(parent, view, resPos, id);
}
}
}
has position = 0; But it should has position 3 when I click on item on fourth position.
Hi;
I need different number of columns for each row. Is it possible with this library?
Thank you
Defined GridViewWithHeaderAndFooter in layout.xml with padding which give space for scrollbar.
But the padding doesn't worked for FooterView which caused by FooterView not centered in GridView.
03-04 02:25:06.840: E/AndroidRuntime(625): FATAL EXCEPTION: main
03-04 02:25:06.840: E/AndroidRuntime(625): java.lang.RuntimeException: java.lang.NoSuchFieldException: mColumnWidth
03-04 02:25:06.840: E/AndroidRuntime(625): at com.huaban.android.ui.view.HeaderFooterGridView.getColumnWidthCompatible(HeaderFooterGridView.java:308)
03-04 02:25:06.840: E/AndroidRuntime(625): at com.huaban.android.ui.view.HeaderFooterGridView.getRowHeight(HeaderFooterGridView.java:337)
03-04 02:25:06.840: E/AndroidRuntime(625): at com.huaban.android.ui.view.HeaderFooterGridView.onMeasure(HeaderFooterGridView.java:106)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.View.measure(View.java:8313)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:701)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.LinearLayout.onMeasure(LinearLayout.java:311)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.View.measure(View.java:8313)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.support.v4.widget.SwipeRefreshLayout.onMeasure(SwipeRefreshLayout.java:559)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.View.measure(View.java:8313)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.View.measure(View.java:8313)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1456)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.View.measure(View.java:8313)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.View.measure(View.java:8313)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.View.measure(View.java:8313)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:581)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:365)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.View.measure(View.java:8313)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.View.measure(View.java:8313)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1456)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.View.measure(View.java:8313)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.View.measure(View.java:8313)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.View.measure(View.java:8313)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.View.measure(View.java:8313)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.View.measure(View.java:8313)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.View.measure(View.java:8313)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.View.measure(View.java:8313)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.ViewRoot.performTraversals(ViewRoot.java:839)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.os.Handler.dispatchMessage(Handler.java:99)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.os.Looper.loop(Looper.java:130)
03-04 02:25:06.840: E/AndroidRuntime(625): at android.app.ActivityThread.main(ActivityThread.java:3683)
03-04 02:25:06.840: E/AndroidRuntime(625): at java.lang.reflect.Method.invokeNative(Native Method)
03-04 02:25:06.840: E/AndroidRuntime(625): at java.lang.reflect.Method.invoke(Method.java:507)
03-04 02:25:06.840: E/AndroidRuntime(625): at com.android.internal.os.ZygoteInit$MethodAndArgsCall
java.lang.ClassCastException: in.srain.cube.views.GridViewWithHeaderAndFooter$HeaderViewGridAdapter cannot be cast to android.widget.BaseAdapter
多次滑动到底部 加载更多时必现
I post question on stackoverflow, but nobody gives me answer.
this link on web site - http://stackoverflow.com/questions/31207596/scroll-to-position-on-gridview-use-gridviewwithheaderandfooter.
I think issues in library.
我用google官方的那个代码,向下向右偏8像素,使用这个,向下偏8像素。
不知道哪里出问题了,请教~~
FullWidthFixedViewLayout 的mTop 和 mBottom差了8像素。
////
int realLeft = HeaderGridView.this.getPaddingLeft() + getPaddingLeft();
// Try to make where it should be, from left, full width
if (realLeft != left) {
offsetLeftAndRight(realLeft - left);
}
int realTop = HeaderGridView.this.getPaddingTop() + getPaddingTop();
////通过这种方式解决??
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.