我的应用程序具有线性布局的屏幕,其中显示我的所有控件(复选框,单选按钮,下拉列表等)。当我们显示屏幕时,它会加载所有控件(1000个控件)并显示它。它花费更多时间加载并显示所有控件。因此,可以在屏幕上仅显示10个控件,当我们向下滚动时,另外10个控件将动态加载并显示在屏幕上。
我使用的是线性布局,我不想使用listview。
修改
我无法使用listview,因为我的所有控件都不在单行中。例如,复选框控件为row1,日期显示为row2,单选按钮或编辑文本为row3等。这些所有控件均来自服务器动态。所以在这里我不能像你建议的那样使用listview。
答案 0 :(得分:1)
您的编辑参数是错误的。行是逻辑单元,而不是预定义的东西。你把它放在行内,甚至不止一个你的控制,完全取决于你。
您确实需要使用ListView并动态更改您在行中显示的内容。就像你说的那样:在第1行你放了一个复选框,第2行得到一个日期显示,第3行有两个想法像TextView和开/关切换。你应该为此做一个严格的建设:使用ListView!
除此之外:用户体验的用户体验非常糟糕,是“不要”列表的完美示例。以某种方式构建来自服务器的控件。每个设置屏幕都有一些类别,如“声音”,“视频”,“通知”...为您的控件做同样的事情!我真的怀疑你不能以某种方式对你得到的控件进行分类。
你应该努力防止用户体验灾难......
答案 1 :(得分:0)
当然,但是你只需要实现延迟加载等操作,最后调整一下LinearLayout,它可以根据滚动位置滚动和加载数据。 为了做得好,你将创建一个单独的类,你可以调用一个适配器,它将为你处理加载。
然后你意识到你创建了一个糟糕的ListView版本。
答案 2 :(得分:0)
我认为在容器中动态加载不同类型的视图的最优雅的解决方案是使用某种扩展AdapterView
的容器。
这样您就可以实现可以创建所需视图的Adapter
。
这是一种非常有效的方法,因为它重用了滚出界限的视图,而不是创建它需要的每个视图。
在我的代码中,我使用了一个扩展AdapterView<ListAdapter>
的容器,效果很好。