Android listview更新次数太多了

时间:2013-12-18 10:06:35

标签: android performance listview relativelayout

在我的主要活动布局(RelativeLayout)中,我在其他按钮和Textview中显示三个垂直方向的列表视图。我的问题是,当其中一个列表视图(屏幕左侧的那个)更新时,其他两个也会更新,导致UI性能不佳。

据我所知,当一个视图的大小影响另一个视图的定位(导致另一个视图重绘)时,RelativeLayout可能会很棘手,所以我确保两个listviews的定位与左边没有关联listview的大小。

我还查看了有关如何使用ViewHolders等提高listview重绘效率的技巧,但我宁愿将此问题解决到它的核心。

更多详情:

  • 对于左侧listview的适配器,我将ArrayAdapter类子类化。
  • 对于其他两个listviews的适配器,我使用了CursorAdapter类的子类。

3 个答案:

答案 0 :(得分:1)

如果将android:layout_height="wrap_content"设置为ListView,系统会尝试找到每个元素的最佳大小并多次调用getView。除了使用android:layout_height="fill_parent"

之外,没有办法解决这个问题

http://www.androiddevelopersolutions.com/2013/07/android-listview-adapter-getview-called.html custom listview adapter getView method being called multiple times, and in no coherent order

答案 1 :(得分:1)

你是罪魁祸首的RelativeLayout,在其中使用其他一些视图,比如LinearLayout和android:weightSum等......

答案 2 :(得分:0)

尝试使用相同的适配器类以获得更好的性能,因为执行时间因您要显示的数据类型而异。