`

android ListView 刷新数据,加载时遇到的数组越界问题

阅读更多
05-31 11:19:55.423: E/Microlog(13846): LoggerExceptionHandle [ERROR] java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
05-31 11:19:55.423: E/Microlog(13846): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
05-31 11:19:55.423: E/Microlog(13846): at java.util.ArrayList.get(ArrayList.java:304)
05-31 11:19:55.423: E/Microlog(13846): at android.widget.HeaderViewListAdapter.isEnabled(HeaderViewListAdapter.java:164)
05-31 11:19:55.423: E/Microlog(13846): at android.widget.ListView.dispatchDraw(ListView.java:3142)
05-31 11:19:55.423: E/Microlog(13846): at android.view.View.draw(View.java:10991)
05-31 11:19:55.423: E/Microlog(13846): at android.widget.AbsListView.draw(AbsListView.java:3436)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewGroup.drawChild(ViewGroup.java:2887)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
05-31 11:19:55.423: E/Microlog(13846): at android.view.View.draw(View.java:10991)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewGroup.drawChild(ViewGroup.java:2887)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
05-31 11:19:55.423: E/Microlog(13846): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchDraw(PhoneWindow.java:2166)
05-31 11:19:55.423: E/Microlog(13846): at android.view.View.draw(View.java:10991)
05-31 11:19:55.423: E/Microlog(13846): at android.widget.FrameLayout.draw(FrameLayout.java:450)
05-31 11:19:55.423: E/Microlog(13846): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2172)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewRootImpl.draw(ViewRootImpl.java:2031)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1639)
05-31 11:19:55.423: E/Microlog(13846): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2447)
05-31 11:19:55.423: E/Microlog(13846): at android.os.Handler.dispatchMessage(Handler.java:99)
05-31 11:19:55.423: E/Microlog(13846): at android.os.Looper.loop(Looper.java:137)
05-31 11:19:55.423: E/Microlog(13846): at android.app.ActivityThread.main(ActivityThread.java:4439)
05-31 11:19:55.423: E/Microlog(13846): at java.lang.reflect.Method.invokeNative(Native Method)
05-31 11:19:55.423: E/Microlog(13846): at java.lang.reflect.Method.invoke(Method.java:511)
05-31 11:19:55.423: E/Microlog(13846): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
05-31 11:19:55.423: E/Microlog(13846): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
05-31 11:19:55.423: E/Microlog(13846): at dalvik.system.NativeStart.main(Native Method)

出错CASE 在弹窗选择搜索条件后,启用了下拉刷新控件的headView 之后,服务器还没返回就异常崩溃了

网上有提供一个解决办法 http://hi.baidu.com/guoxiaoming/item/7b337449864f3fe11381dacd

办法没试过,感觉对性能有些影响 

我的解决办法
      一.. 不使用下拉刷新的headView,
      二..当adapter的数据被全部clean时,使用adapter.notifyDataSetInvalidated();
      三..在加入新的数据后,使用adapter.notifyDataSetChanged();
分享到:
评论

相关推荐

    android listview 下拉刷新 动态加载数据 图文混排

    本教程将重点讲解如何在ListView中实现下拉刷新和动态加载数据的功能,同时处理图文混排的问题。 首先,我们要引入SwipeRefreshLayout库,它是Android SDK提供的一个下拉刷新框架。在`build.gradle`文件中添加以下...

    Android ListView 下拉刷新、上拉加载

    4. 性能优化:对于大数据量的列表,可以使用ViewHolder模式减少视图复用的开销,或者使用ListView的HeaderView和FooterView来实现下拉刷新和上拉加载的界面。 总结,下拉刷新和上拉加载是Android应用中常见的功能,...

    android listView图片异步加载(拖动时不加载,双缓存)

    2. 加载监听:提供加载监听接口,以便在图片加载完成后通知ListView刷新。 3. 延迟加载:对于屏幕外的图片,可以延迟加载,只在即将显示时才开始加载。 4. 图片压缩:对下载的图片进行压缩,减少内存占用。 5. 使用...

    Android ListView 上拉加载,下拉刷新

    通过以上步骤,我们就能在Android应用中为ListView实现下拉刷新和上拉加载的功能,为用户提供更流畅的数据浏览体验。记住,在实际开发中,可能还需要处理各种边界情况,如数据为空、网络错误等,确保用户界面始终...

    Android ListView数据加载

    本文将深入探讨如何在Android中有效地加载和管理ListView的数据。 首先,理解ListView的工作原理至关重要。ListView通过复用convertView来提高性能,即只有当前可视范围内的列表项才会被创建和绘制,其余的项会在...

    android Listview下拉刷新 上拉(滑动分页)加载更多

    这些功能使得用户可以在滚动到列表顶部时更新数据(下拉刷新),或者在滚动到底部时加载更多数据(上拉加载更多)。这种设计常见于许多社交媒体应用,如微博。 实现这个功能,我们可以利用开源库,比如...

    android listView 分页加载

    分页加载(也称为懒加载)是在用户滚动到ListView底部时,才动态加载更多数据的方法。这种策略避免了一次性加载大量数据导致的内存消耗和应用启动时的延迟,提高了应用的响应速度和流畅性。 2. 实现方式: - ...

    android ListView滑动自动加载

    在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。ListView的优势在于它可以高效地管理内存,只加载屏幕可见的视图,从而节省系统资源。本篇将详细讲解如何实现ListView的滑动自动加载功能,即...

    android ListView 下拉刷新数据以及上拉加载数据

    `android ListView 下拉刷新数据以及上拉加载数据`是移动应用中常见的功能,让用户能够动态地获取更多内容或者更新已有信息。本教程将深入讲解如何实现这个功能。 首先,我们要引入支持下拉刷新和上拉加载的库。...

    android listview demo 下拉加载更多

    在Android中,开发者需要监听ListView的滚动事件,当检测到用户到达底部时,调用加载更多数据的方法。 3. **代码实现** - `OnScrollListener`: ListView提供了`OnScrollListener`接口,可以通过重写`...

    android listview从mysql加载数据和图片

    本示例"android listview从mysql加载数据和图片"将介绍如何从MySQL数据库获取数据,并在ListView中显示这些数据以及对应的图片。这个过程涉及到Web服务端、Android客户端以及MySQL数据库的交互。 首先,我们需要在...

    android listView下拉刷新 上拉加载 分开

    标题提到的"android listView下拉刷新 上拉加载 分开",意味着它提供了三个独立的示例,分别针对下拉刷新和上拉加载功能进行实现。下面我们将详细探讨这些知识点。 1. **下拉刷新(Pull-to-Refresh)** 下拉刷新功能...

    Android应用源码 ListView下拉刷新 Demo

    在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。ListView下拉刷新功能是现代移动应用中的一个常见特性,允许用户通过下拉列表来获取最新的数据,如社交媒体的新消息或天气更新。这个"Android...

    Android ListView刷新加载

    在实现下拉刷新和上拉加载时,v7包的SwipeRefreshLayout和AbsListView(ListView的父类)的OnScrollListener等工具能帮助我们兼容更多的设备和Android版本。同时,v7包还包含了其他有用的功能,如ToolBar、CardView...

    Android Listview下拉刷新上拉加载源码

    此外,对于性能优化,还需考虑异步加载数据、避免内存泄漏和防止过度绘制等问题。总之,这个资源对于想要在ListView中实现高效下拉刷新和上拉加载功能的Android开发者来说,具有很高的参考价值。

    android下拉刷新+上拉加载+滑动删除的ListView

    上拉加载更多(Infinite Scroll)通常与分页加载结合,当用户滚动到ListView底部时,自动加载更多数据。实现这一功能需要监听ListView的滚动事件,并判断是否到达底部。可以自定义ListView的OnScrollListener: ```...

    Android中使用ListView数据异步加载与AsyncTask

    总结,Android中的ListView数据异步加载结合AsyncTask可以有效解决UI卡顿问题,同时利用线程池优化后台任务的执行,提高应用的性能和用户体验。通过合理的数据加载优化策略,可以进一步提升应用的运行效率。在实际...

    Android listview 下拉刷新和下拉刷新及加载更多

    综上所述,Android ListView的下拉刷新和上拉加载更多功能是现代移动应用中不可或缺的组件,它们提升了用户体验,使得数据更新和加载更加便捷。开发者可以通过多种方式实现这些功能,但需要注意性能优化和用户体验的...

    Android里ListView分页加载数据

    通过以上步骤和优化,你可以实现在Android应用中有效地使用ListView分页加载数据,提升用户体验。在实践中,还需要根据具体需求和项目规模来调整和优化。在OndeStudy1这个文件中,可能包含了实现分页加载的示例代码...

Global site tag (gtag.js) - Google Analytics