gpt4 book ai didi

Android Layout 效率,多 View 还是单 View 隐藏?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:08 25 4
gpt4 key购买 nike

我有一个带有布局的 ListView。有时布局需要以一种方式查看,有时需要以另一种方式查看。它们主要是布局在不同区域的文本,具有不同的权重大小等。主视图与其他 View 的比例约为 5:1。当需要更改时,整个 View 仅更改 2/3。

我想我有两个选择:

  1. (现在的样子)一个布局(所以它永远不必重新膨胀,因为回收的 View 都是一样的)并且 View 的 2nd 2/3 被隐藏直到需要它进行更改,然后代码将显示它并隐藏 View 的原始 2/3。

  2. (其他方式)两个布局,复制 1/3 布局,每个布局在其他 2/3 上。然后,当需要使用其中一种不同的布局时,ListView 回收器中的旧 View 会被丢弃,并生成一个新的正确 View ,并在移动列表时再次返回。

所以我在这里要问的是,隐藏/显示相同布局的部分以防止 ListView 中的回收器膨胀更多布局更好,还是有两个缩减布局没有额外的隐藏 View ,并在需要时膨胀它们?

最佳答案

如果 TextViews 是这些布局的主要部分,我认为性能不会有太大差异,因此您可以采用任何一种方式。 会选择选项二,因为:

  1. 正常行布局与特殊行布局之间的比率很大。如果您保留单一布局方法,那么您将不得不在代码中为每一行修改布局,无论是正常的还是特殊的,因为您可能正在处理回收的View 当显示正常的部分时隐藏了 2/3 部分(所以你每次都修改布局)。如果您要使用第二个选项,那么您可以从 getView 方法中删除这部分,并简单地使用 switch 来查看您正在处理的行类型(否每次在 getView 方法中对行布局进行更多修改,您让 ListView 通过为您提供正确类型的行布局来处理)。不要担心膨胀另一个布局文件(一次),这不是要担心的性能损失。

  2. 使用一种类型的布局意味着即使用户没有看到它们,您也会将 Views 保留在内存中(因此您可能会阻止 ListView 从膨胀更多的 Views(实际上只有一次)但与此同时,您甚至没有向用户显示的内容占用了更多的内存)。第一个选项的优点是将数据绑定(bind)到行更简单,因为您可以随意使用所有 View (即使用户看不到其中的一部分)而不是第二个选项,您将拥有查看需要根据行类型显示哪些数据。

  3. 代码可读性。有两种行类型并进行测试以查看您在 getView 方法中获得的是哪一种,这更有意义,因为您可以了解每种行类型的逻辑。此外,如果您计划在将来更改这些行布局或添加更多行类型,那会更好。

只要您帮助它提供行类型,ListView 就可以很好地回收 View 。编辑:ListView 将为您在适配器中声明的每种类型保留一个循环 View 。所以 ListView 只会在它第一次在 ListView 中找到第二个布局时膨胀第二个布局,下次当它需要一个类型为 with 的行时,它将使用回收的一个(它将维护两种类型的回收 View ,第一行类型和第二行类型)。

关于Android Layout 效率,多 View 还是单 View 隐藏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10527179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com