当我们在使用listview的时候。有时候自定义adapter的时候,是不是会发现在getview里打印日志的时候,重复调用很多次?有时候4次。有的严重甚至到10次,当我们在listview中移动的时候。每移动一列都会调用很多次,这样大大影响到效率!其实这和listview本身在android上的机制有关。下面我开始来介绍一下吧:
在布局,我们只有一个listview的时候。那好。我们把高设置成wrap_content的时候。在listview里加载几行看看。日志在getview里打印一下。是不是重复调用了?那这个办法就好弄了。把高设置成fill_parent就成了。这个时候发现日志还是重复调用?那就要看一下Listview的上一级而已的高是不是也是设置也fill_parent的,如果不是。请改动吧。如果是。。。那我还真没碰到重复调用的!因为测试好几次了!
如果我们在而已里不只一个Listview。一个复杂好看的布局可能有很多。listview在布局的某个地方。这个时候有时候运气不好。你会发现你调用了很多次getview。我测试的时候。最高230次。。。可想而知。这个速度是相当慢。而且每移动一次就是调用这么多次!对于这样的情况,在修改布局的时候,要考虑以下两点:1.首先考虑需求布局和性能哪个更重要一点。2.考虑listview周边哪个布局控件影响到了它!
如果在性能上没有太大影响,而需求要求必需是那样的布局。那就以布局为主。看看有没有别的方法来优化一下listview,当然前提是布局一点都不能调整。如果能调整,布局没有太大变动。而listview又能很好的优化。那就当然优化了!当我们优化的时候。首先要看一下有没有影响到Listview重绘的控件,比如。如果它上面和下面都有控件。而且高都是wrap_content,那么你就要设置成fill_parent或者固定高。这样listview在高上就不会重绘,这是最主要的一点。那左右是不是也有控件(一般一个手机页面用到list的时候不会有这么多控件)?有,那我们就也要调整,那就同高一样的设置。一定要让listview是一个固定在那个地方不动的。不然,你就等着让他重复去调用吧!
其实说了这么多。最主要的还是在我们进行布局的时候。要巧妙的运用每个控件的属性,以及了解控件每个的原理。这样在我们进行UI设计的时候,才能很好的去结合!
http://blog.csdn.net/wangjia55/article/details/8573553
相关推荐
分析这个适配器的代码,我们可以找出可能导致`getView()`多调用的问题,并进行优化。 总之,理解`ListView`的`getView()`调用机制并优化其使用是提高Android应用性能的关键。在实际开发中,我们需要仔细检查`...
综上所述,通过合理地利用缓存、优化数据绑定以及异步处理,我们可以有效地解决ListView在`getView()`调用中出现的卡顿问题。同时,关注Android的更新和新组件,如RecycleView,也是保持应用流畅性的重要手段。在...
当调用getView()方法时,根据数据创建或复用一个View,并在这个View中添加子ListView。 子ListView的Adapter则需要处理其自身的数据源,这可能是一个简单的数组或者更复杂的对象列表。在子ListView的Adapter中,...
在描述中提到的问题,开发者在测试时发现ListView的同一项数据在不断地重复执行`getView()`。这种情况通常是由于ListView的滚动机制引起的。ListView为了提高性能,采用了视图复用(View Recycling)策略,即当一个...
本篇文章将深入探讨如何在ListView中实现这两种特性,以及相关的源码分析。 一、下拉刷新 下拉刷新功能通常在用户滚动列表到顶部时触发,更新数据并显示刷新状态。在Android中,我们通常使用SwipeRefreshLayout来...
在Android开发中,ListView是一种常用的组件,用于展示可滚动的列表数据。然而,有时我们可能需要在一个ListView的项中再嵌套另一个ListView,这被称为ListView的嵌套。这样的设计可以用于展示复杂的数据结构,比如...
总的来说,解决ListView中CheckBox复用问题需要对ListView的工作机制有深入理解,并且在Adapter的设计上做好状态管理和视图复用。通过以上方法,我们可以确保ListView在滚动时每个item的CheckBox状态都能正确显示,...
在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据的列表,用户可以通过滚动查看更多的条目。这个教程将详细介绍Android ListView的基本用法。 ### 1. 添加ListView到布局 首先,在XML布局文件...
在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据列表,通常配合适配器(Adapter)使用。本示例“android listView 适配器demo”将详细讲解如何利用适配器机制来动态填充ListView的数据。 首先...
2. 在Adapter的getView方法中,根据position判断当前RadioButton是否应该被选中,避免因ListView的复用导致的显示问题。 3. 考虑使用RadioGroup包裹每个ListView项的RadioButton,这样可以自动处理单选逻辑,但可能...
在Android开发中,ListView是一种常用的UI控件,用于展示大量数据列表。然而,要实现一个树形结构,即节点有层级关系的数据展示,就需要进行一些定制化的工作。本篇文章将详细探讨如何在不继承`ListActivity`而是...
当每条数据进入可见区域时,adapter的getview()会被调用,返回代表具体数据的视图。触摸滚动时,频繁调用。支持成百上千条数据。 下面为显示每条数据的xml文件: <LinearLayout nxmlns:android=...
在Android开发中,ListView是广泛使用的控件,用于展示大量数据列表。然而,随着移动应用交互体验的提升,用户期望更多的动态功能,如下拉刷新(Pull-to-Refresh)。下拉刷新功能允许用户通过在ListView顶部向下拉动...
在Android开发中,ListView是一种常用的组件,用于展示...通过分析和理解这个"Android应用源码 ListView下拉刷新 Demo",开发者能够更好地掌握在实际项目中实现ListView下拉刷新的方法,提高应用的交互性和用户体验。
在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。然而,在实现ListView时,我们可能会遇到一个问题,即按钮点击状态错乱。这个问题通常表现为点击一个列表项中的按钮后,显示的是其他列表项...
在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。然而,ListView的复用机制有时会导致一些问题,特别是在涉及复选框(Checkbox)的状态管理时。本篇文章将详细探讨这个问题,并提供一个完美的...
在Android开发中,ListView是一个非常重要的组件,常用于展示大量数据列表。本示例"Android ListView详细demo源码"提供了一个可以直接使用的ListView实现,适用于学习和快速开发。在这个项目中,我们将深入探讨...
通过这个"Android 解决ListView的复用问题 demo",开发者可以学习到如何在实际项目中应用以上策略,以优化ListView的性能并避免可能出现的问题。博客文章提供了更详细的步骤和代码示例,可以帮助开发者深入理解...