改进android listview性能以进行刷新和滚动

时间:2014-05-02 12:04:44

标签: android performance android-listview refresh

我有ListView onItemClick所选项目更改其布局,弹出不同的按钮。如果选择了任何其他项目,则先前选择的项目将恢复正常。我的ListView适配器工作正常,但在我的适配器中使用notifyDataSetChanged()刷新整个列表需要花费太多时间。

我的问题是只刷新ListView中更改的项目。 而且我想提出更好的滚动性能的建议。

3 个答案:

答案 0 :(得分:1)

您可以在适配器类中定义一个方法,该方法将返回当前项目视图。在onitemclick中使用此方法对单击的项目进行更改。您可以在activity中定义类视图类型类变量,并将前一个视图存储在那里......

答案 1 :(得分:1)

当文本视图,图像等小工具位于布局层次结构的底部时,ListView滚动性能会变慢。

因此,为了提高列表性能,应该设计具有最小布局树级别的项目xmls。

答案 2 :(得分:1)

尝试实施查看持有人模式,这会提高ListViews

的加载和滚动效果

Making ListView Scrolling Smooth | Android Developers
Using lists in Android (ListView) - Tutorial - Vogella

来自文档:

  

您的代码可能会在滚动findViewById()期间经常调用ListView,这会降低性能。即使适配器返回一个膨胀的视图以进行回收,您仍然需要查找元素并更新它们。重复使用findViewById()的方法是使用"视图持有者" 设计模式。