`
wangleyiang
  • 浏览: 220113 次
社区版块
存档分类
最新评论

Android ListView缓存惹得祸

阅读更多

最近遇到一个问题,在使用ListView时,用SimpleAdapter提供数据,然后自定义ViewBinder来绑定数据,但是自定义的ListView的子选项却出现了显示状态混乱的问题。

 

通过调试,最终把问题范围缩小到了public boolean setViewValue(View view, Object data, String,textRepresentation)中。最终找到原因是ListView缓存会使用已经创建的ListView非可视的子选项对象去装载新的数据,导致数据状态是该子选项以前的状态,从而发生奇怪的紊乱现象。产生问题的原因找到,解决问题就是时间和技术的问题了。解决办法之一是:对子选项中的元素重新初始化到默认状态就可以了。

 



 图片说明:

  • 不要认为系统创建的ListView子选项的数量和数据的大小总是一样的,当数据一次可以在屏幕显示时,这个值是相等的,但是当一屏无法显示时,这个值就不等了;
  • 如果当数据量大的情况下也是创建相同数量的子选项,那么一方面会降低响应时间,影响性能,另一方面也就浪费了不在显示区域的那些子选项对象;
  • 系统中子选项对象的个数应该是不小于一屏中显示子选项的最大值『之所以界定比较模糊,是因为没有看相关的源码,所以仅仅是理论上猜测罢了』;

 

多说一句:解决问题没有什么意思,有意思的是分析产生问题的原因!:)

 

 

  • 大小: 24.1 KB
分享到:
评论

相关推荐

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

    在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。然而,当这个列表包含图片时,如果直接在主线程中加载,会导致UI卡顿,用户体验下降。因此,我们需要采用异步加载图片的方式,同时为了优化性能...

    android的listview嵌套listview,列表嵌套列表 android studio版本

    在Android开发中,ListView是一种常用的视图组件,用于展示大量数据列表。当需求涉及列表中的每个条目本身也需要展示一个子列表时,我们就会遇到ListView的嵌套问题。本教程将详细讲解如何在Android Studio环境下...

    Android ListView边框圆角美化

    在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。为了提升用户体验和界面设计的美观性,我们常常需要对ListView进行定制化,包括设置边框和实现圆角效果。本文将深入探讨如何在Android中实现...

    Android listview自动换行

    在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。它的高效性和可滚动性使得它在显示数据集合时十分有用。然而,当ListView的子项(item)宽度超过屏幕宽度时,如何实现自动换行就成了一个...

    Android ListView 下拉刷新、上拉加载

    在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。`下拉刷新`和`上拉加载`功能的实现,极大地提升了用户体验,让用户能够实时获取到最新的数据。本篇文章将深入探讨如何在ListView中实现这两种...

    android ListView 网格布局

    在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。它的网格布局模式使得数据以多列的形式展示,增强了界面的可读性和用户体验。本文将深入探讨如何在Android中实现一个基于ArrayAdapter的网格...

    android listview 固定表头,固定前几列

    在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。然而,当列表项过多时,滚动时表头(Header)会随着滚动消失,给用户查看和理解数据带来不便。为了解决这个问题,开发者通常会实现一个固定...

    Android listview和viewpager解决冲突 滑动冲突

    Android listview viewpager 滑动 跳动 冲突解决 ListView中嵌套ViewPage有或者滑动手势冲突解决 blog 地址 : http://blog.csdn.net/aaawqqq/article/details/43824631

    Android ListView实例源码

    - 为提高ListView滚动时的性能,使用ViewHolder可以缓存View的子组件引用,避免频繁的findViewById操作。 5. **监听事件**: - 可以通过设置`OnItemClickListener`监听ListView的点击事件。 - 通过`...

    android listview带有editText

    在Android开发中,ListView是一种常用的组件,用于展示可滚动的多行数据列表。然而,当在ListView的每一项中嵌套EditText时,会遇到一些挑战,主要包括EditText的焦点管理问题和数据错位问题。这两个问题在实际应用...

    Android listview嵌套listview

    在Android开发中,ListView是一种常用的组件,用于展示可滚动的列表数据。然而,有时我们可能需要在一个ListView的项中再嵌套另一个ListView,这被称为ListView的嵌套。这样的设计可以用于展示复杂的数据结构,比如...

    android listview

    在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。本篇文章将深入探讨“android listview”相关的知识点,包括横向ListView、微信风格的ListView以及XListView的优化。 首先,我们来看“横向...

    ListView缓存机制

    ListView是Android平台上常用的一种...总的来说,理解并合理运用ListView的缓存机制是提升Android应用性能的重要手段。开发者需要根据具体项目需求,结合优化策略,确保ListView在处理大量数据时能保持优秀的用户体验。

    android ListView简单用法

    在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据的列表,用户可以通过滚动查看更多的条目。这个教程将详细介绍Android ListView的基本用法。 ### 1. 添加ListView到布局 首先,在XML布局文件...

    Android listview 分组及折叠分组

    在Android开发中,ListView是一种常用的视图组件,用于展示大量数据列表。在某些场景下,我们可能需要将数据按照特定的逻辑进行分组,并且允许用户折叠或展开这些分组,以便更好地管理和浏览数据。本篇文章将深入...

    android listView 改变选中行的 字体颜色和 图片

    在Android开发中,ListView是一种常用的组件,用于展示可滚动的多行数据列表。要改变ListView选中行的字体颜色和图片,我们需要理解ListView的工作原理,以及如何自定义其Adapter和视图。以下是一些关键知识点的详细...

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

    在Android开发中,ListView是一种常用的组件,用于展示大量可滚动的数据。本教程将重点讲解如何在ListView中实现下拉刷新和动态加载数据的功能,同时处理图文混排的问题。 首先,我们要引入SwipeRefreshLayout库,...

    Android ListView长按删除

    在Android开发中,ListView是一种常用的组件,用于展示大量可滚动的数据。它允许用户通过垂直滚动查看多行数据项。在许多应用中,我们可能需要添加一些交互性功能,比如长按删除,以增强用户体验。本篇文章将详细...

    android ListView实现树形结构

    在Android开发中,ListView是一种常用的UI控件,用于展示大量数据列表。然而,要实现一个树形结构,即节点有层级关系的数据展示,就需要进行一些定制化的工作。本篇文章将详细探讨如何在不继承`ListActivity`而是...

Global site tag (gtag.js) - Google Analytics