Android:ExpandableList View在Android OS 4.0中滚动超过30条记录时崩溃

时间:2012-01-21 08:43:50

标签: android

ExpandableList视图在运行“冰淇淋三明治Android OS 4.0”的Nexus中滚动超过30条记录时崩溃。这个问题只出现在我的Nexus手机中。它在我的模拟器中工作正常,即使在Andriod 4.0上运行它还有更多30条记录。

我在getGroupView类的getChildView()BaseExpandableListAdapter方法中使用了android inflate功能(用于呈现XML文件中的布局)。如果 如果我使用动态getChildView()呈现getGroupView()TextView函数,那么它可以正常工作。

此问题仅在滚动期间以及Android OS 4.0(nexus)手机中生成,否则可以正常使用。

我收到了以下错误:

java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:483)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:549)
at com.android.myexample.Custom$MyExpandableListAdapter.getChildView(Custom.java:681)
at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:450)
at android.widget.AbsListView.obtainView(AbsListView.java:2012)
at android.widget.ListView.makeAndAddView(ListView.java:1772)
at android.widget.ListView.fillUp(ListView.java:705)
at android.widget.ListView.fillGap(ListView.java:645)
at android.widget.AbsListView.trackMotionScroll(AbsListView.java:4546)
at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:3813)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4340)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

以下代码发生错误...

childImg.setImageBitmap(BitmapFactory.decodeStream(getAssets().open((childListDataBean.get(groups.get(groupPosition)).get(childPosition).imageId))));

2 个答案:

答案 0 :(得分:0)

您需要查找管理记忆的方法。你消耗的内存比虚拟机给你的多得多。这是你的问题,查看Romain Guy的谈话,他就Graphics和Bitmaps做了具体的讨论。

答案 1 :(得分:0)

最后,我通过使用以下................................禁用expandablelistview的滚动捕获来修复此错误。 ...........................

<ExpandableListView 
android:id="@+id/android:EL1"    
propertiesandroid:overScrollMode="never"
android:scrollingCache="false"
android:transcriptMode="disabled"
android:fastScrollEnabled="false"
android:smoothScrollbar="true"
android:fastScrollAlwaysVisible="false"
android:animationCache="false"
android:persistentDrawingCache="none"
android:alwaysDrawnWithCache="false"
android:drawingCacheQuality="low"
/>