- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个带有布局的 ListView
。有时布局需要以一种方式查看,有时需要以另一种方式查看。它们主要是布局在不同区域的文本,具有不同的权重大小等。主视图与其他 View 的比例约为 5:1。当需要更改时,整个 View 仅更改 2/3。
我想我有两个选择:
(现在的样子)一个布局(所以它永远不必重新膨胀,因为回收的 View 都是一样的)并且 View 的 2nd 2/3 被隐藏直到需要它进行更改,然后代码将显示它并隐藏 View 的原始 2/3。
(其他方式)两个布局,复制 1/3 布局,每个布局在其他 2/3 上。然后,当需要使用其中一种不同的布局时,ListView
回收器中的旧 View 会被丢弃,并生成一个新的正确 View ,并在移动列表时再次返回。
所以我在这里要问的是,隐藏/显示相同布局的部分以防止 ListView
中的回收器膨胀更多布局更好,还是有两个缩减布局没有额外的隐藏 View ,并在需要时膨胀它们?
最佳答案
如果 TextViews
是这些布局的主要部分,我认为性能不会有太大差异,因此您可以采用任何一种方式。 我会选择选项二,因为:
正常行布局与特殊行布局之间的比率很大。如果您保留单一布局方法,那么您将不得不在代码中为每一行修改布局,无论是正常的还是特殊的,因为您可能正在处理回收的View
当显示正常的部分时隐藏了 2/3 部分(所以你每次都修改布局)。如果您要使用第二个选项,那么您可以从 getView
方法中删除这部分,并简单地使用 switch
来查看您正在处理的行类型(否每次在 getView
方法中对行布局进行更多修改,您让 ListView
通过为您提供正确类型的行布局来处理)。不要担心膨胀另一个布局文件(一次),这不是要担心的性能损失。
使用一种类型的布局意味着即使用户没有看到它们,您也会将 Views
保留在内存中(因此您可能会阻止 ListView
从膨胀更多的 Views
(实际上只有一次)但与此同时,您甚至没有向用户显示的内容占用了更多的内存)。第一个选项的优点是将数据绑定(bind)到行更简单,因为您可以随意使用所有 View (即使用户看不到其中的一部分)而不是第二个选项,您将拥有查看需要根据行类型显示哪些数据。
代码可读性。有两种行类型并进行测试以查看您在 getView
方法中获得的是哪一种,这更有意义,因为您可以了解每种行类型的逻辑。此外,如果您计划在将来更改这些行布局或添加更多行类型,那会更好。
只要您帮助它提供行类型,ListView
就可以很好地回收 View 。编辑:ListView
将为您在适配器中声明的每种类型保留一个循环 View 。所以 ListView
只会在它第一次在 ListView
中找到第二个布局时膨胀第二个布局,下次当它需要一个类型为 with 的行时,它将使用回收的一个(它将维护两种类型的回收 View ,第一行类型和第二行类型)。
关于Android Layout 效率,多 View 还是单 View 隐藏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10527179/
我不确定是否理解好几个 Android /res/layout 文件夹所起的作用。 layout:一般布局 layout-port:必须更改为纵向的小部件布局 layout-land:小部件的布局,必
我在 Qt 4.7 中有一个界面,但我很难按照自己的意愿行事。 所需行为的基本描述:用户在组合框中进行选择,这会导致查询转到另一个函数,该函数返回一个 QHBoxLayout 对象,该对象通常包括多个
我在 res 文件夹中创建了 layout-large、layout-normal 和 layout-xlarge 并且我将所有 xml 文件复制到那些布局文件夹中 首先,我想问一下 layout(d
如图所示。我想在布局上方显示星图。我是这种编码的新手。 我的查询是1)是否可以在我的布局端显示星标(图像)? 2) 如果每次点击我的 Activity 时我都想显示星标并显示第二张图片,这可能吗?意味
关闭。这个问题需要debugging details .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 上个月关闭。 Improve this questio
我正在使用 android studio 中的 Material 设计为 pre lollipop 设备创建一个 android 应用程序,我是 android studio 的新手我正在我的项目中创
我对 Android 布局设计感到困惑。我想实现下图中的布局: 但是下面的代码产生了类似这张图片的东西: 我的代码
如果我有: Some Element.... Other Element
我有一个单元格(称为A),它在更高层次的单元格(称为P)中使用一次。当我将 A 放在 P 中时,它的边框比 A 的实际内容大得多。当我下降到 A 并进行缩放时,它被缩小了,表明边缘存在一些东西。 我可
我有一个“auth-redirect”模块,位于所有页面布局文件(1column、2column 等)的开头。这可以确保在渲染任何页面之前,如果用户未经过正确身份验证,则会重定向到登录页面。 我允许呈
我的app只支持landscape模式(这是业务需求)。 我在 layout-land 文件夹中有一个布局 xml 文件,但我没有费心创建一个 layout 文件夹,因为我在 Android list
我正在尝试为我的 Android 应用程序创建启动屏幕,如链接 http://developer.xamarin.com/guides/android/user_interface/creating_
我目前正在开发一个应用程序,我正在使用 swdp为了创建对多个屏幕的支持。 我添加了 sw400dp文件夹,根据 Android Studio 的 XML 渲染器,它基本上包含所有较小的手机。 这意味
Android 在“layout-normal”和“layout”文件夹中处理布局的方式有什么不同吗?如果我有一个被认为布局很小的设备,如果只有这两个选项,它会查看哪个文件夹? 最佳答案 是的,在您给
我已经看到了在单个页面上创建多个强制布局的解决方案,其中每个布局都包含在其自己的SVG中。但是,我一直无法找到有关如何在单个SVG中包括多个力布局的帮助。每个布局都有自己的数据与之关联。 可以在htt
我听说 Constraint-Layout 中的指南和 RTL 存在一些错误。但是这些方法都没有帮助我。我的BottomNavigation 的两边都有指南,一切都在LTR 中工作,但在RTL 中,其
我有以下渲染函数: render() { return ( Header
我知道如何使用以下文件夹,但例如我不知道 layout-small 和 layout-sw320dp 有什么区别? 此外,建议我哪些文件夹对优化很重要。我不喜欢我的程序被用户视为不规则。我希望得到您的
layout-latest.js ui-layout-west 面板 west: { paneSelector: ".ui-layout-west"
我是 Android 开发的新手,对我来说,了解图形布局和 xml 如何相互关联的一个好方法是尝试 xml 属性并查看图形 UI 中的变化。有没有一种方法可以同时并排查看,而不必从一个切换到另一个?图
我是一名优秀的程序员,十分优秀!