给listview写adapter的时候遇见这样一个问题:
在重写public View getView(int position, View convertView, ViewGroup parent)时, 通常为了性能,
会对convertView进行重用,如果convertView为null,则会主动new一个新的View并返回,系统会将这个View
缓存,在下次调用getView时传入。并且不同的position和convertView是一一对应的。我也一直是这样认为的。
问题来了,在HTC Desire HD@Android 2.2上测试的时候,我发现并非如此。比如listview有两个Item0, 1。
0对应convertView A, 1对应convertView B。第一次调用getView是通过log打印发现对应情况是
0 --- A
1 --- B
这是正常的,但是紧接着再一次调用getView情况变成了
0 --- B
1 --- A
这就是问题所在了。
如果我在convertView不会null时直接返回,会发现listview在显示时两个item的内容互换了,但马上又变回
正常的。所以只好忽略convertView不为null的情况一律重新new一个View返回...
我不知道为什么会这样...在其他机器上测试不会这样,情况总是
0 --- A
1 --- B
分享到:
相关推荐
在处理多个listItem布局时,为了提高性能和效率,ListView引入了convertView机制。这个机制是通过缓存已创建但不再可视的listItem视图来避免频繁地创建新视图。下面我们将详细探讨convertView的工作原理及其在实际...
* listview的第一个元素(A)是公用一个convertView的(一般情况),此时问题就来了,如果异步下载图片执行的比较慢,第一个元素对应的url * 下载的图片会放到第一个元素上面还是滑动后第一个可见的元素上面呢? ...
在Android开发中,ListView是一种常用的组件,用于展示可滚动的列表数据。然而,有时我们可能需要在一个ListView的项中再嵌套另一个ListView,这被称为ListView的嵌套。这样的设计可以用于展示复杂的数据结构,比如...
在实际项目中,为了提高性能,通常会使用ViewHolder模式来复用convertView,减少不必要的视图创建,从而提高ListView的滚动流畅性。 总之,ListView是Android开发中的核心组件之一,熟练掌握其用法对于构建用户友好...
在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。然而,在实际操作中,我们经常会遇到ListView在刷新或滚动时出现闪烁的问题,这不仅影响用户体验,也可能是代码优化上的不足。本文将深入探讨...
在Android开发中,ListView是一种常用的UI组件,用于展示大量数据列表。在实际应用中,我们经常需要对ListView进行自定义,比如在每个列表项中添加图片和按钮,以增加交互性和功能多样性。本文将深入探讨如何在...
例如,使用convertView复用机制,以及适当地延迟加载子ListView,只有在用户滚动到对应项时才初始化子ListView。 6. **布局设计**:在XML布局文件中,你需要为每个主列表项定义一个包含子ListView的布局。主列表项...
在实际开发中,为了提高性能,我们必须实现View的复用机制,即convertView。ListView的getView()方法会传入一个可复用的View对象,如果这个View已经符合当前条目的需求,我们就只需要更新它的内容,而无需每次都创建...
getItem(int position)获取指定位置的数据,getItemId(int position)返回对应数据的唯一ID,以及getView(int position, View convertView, ViewGroup parent)方法,该方法负责为ListView创建或复用列表项视图。...
在Android开发中,ListView是一种常用的UI组件,它允许开发者显示一组长列表的数据,通常用于展示大量可滚动的信息。本篇文章将深入探讨如何在ListView中动态添加数据,这在实际应用中是非常常见且重要的功能。 ...
在Android开发中,ListView是一种常用的控件,用于展示大量数据列表。当用户点击ListView的某一行时,通常希望这一行能够被高亮显示,以便用户能清晰地看到他们当前选择的内容。"ListView选中行高亮"这个话题,就是...
convertView是ListView为了提高性能而复用的视图,通过判断其是否为null来决定是否需要创建新的视图。 ViewHolder设计模式是为了优化ListView的滑动性能。在ListView中,随着用户滚动,许多视图项会脱离屏幕,系统...
convertView 是 ListView 中的一个重要概念,它是指 ListView 中已经显示的视图,而不是当前显示的视图。通过使用 convertView,可以减少视图的创建和销毁,提高 ListView 的性能。 三、测试和优化 在测试中,我们...
在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。然而,在实际应用中,我们经常需要在ListView的每一项(item)中添加按钮(button),以便用户进行交互操作。标题"listView上增加button点击...
在Android开发中,ListView是一种常用的视图组件,用于展示大量数据列表。当需求涉及列表中的每个条目本身也需要展示一个子列表时,我们就会遇到ListView的嵌套问题。本教程将详细讲解如何在Android Studio环境下...
在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。然而,在实际应用中,我们经常遇到一个问题:当用户在ListView中滚动时,选中的条目(item)的CheckBox状态无法保持,即“listview滑动保存选中...
1. ListView(乱跳问题完美(包括点击闪动)解决_每一个条目都做动画_不复用convertview20160402) 动画默认显示3行,展开显示全部。 自己在公司做项目,遇到这个问题,就写个类似的demo。供大家相互学习参考,有不足之...
在Android应用开发中,ListView是一种常用的视图组件,它允许用户滚动查看一系列可交互的数据项。在本项目中,我们关注的是如何为ListView添加边框,以提升界面的视觉效果和用户体验。以下将详细介绍如何实现这个...
2. 缓存convertView:ListView会复用已创建的视图,因此在`getView()`中应检查convertView是否为空,避免不必要的视图创建。 3. 使用AsyncTask加载数据:如果数据是从网络或数据库中获取,应在后台线程(如...
在Android开发中,ListView是广泛使用的控件,用于展示大量数据列表。ListViewAdapter是与ListView交互的核心组件,它负责将数据绑定到ListView的各个视图(View)上。本资源包含了一个关于ListViewAdapter和...