我有布局,其中可以有多个视图(确切的数字是动态决定的)。例如,我有一个布局其中它应该包含5视图在一种情况下和在其他情况下它应该包含和其他可能包含等,我知道两种方法来做到这一点。我已经在下面列出了他们两个,但我只是不确定哪一个是好的做法。添加视图的最佳方式是什么?动态还是通过XML?
途径
1:使用循环添加视图动态地布局。
2:在布局中添加所有可能的视图,并根据条件将它们制作成INVISIBLE,GONE,VISIBLE,。
哪种方法比其他方法更好,上述方法之间是否存在性能差异?
我有布局,其中可以有多个视图(确切的数字是动态决定的)。例如,我有一个布局其中它应该包含5视图在一种情况下和在其他情况下它应该包含和其他可能包含等,我知道两种方法来做到这一点。我已经在下面列出了他们两个,但我只是不确定哪一个是好的做法。添加视图的最佳方式是什么?动态还是通过XML?
途径
1:使用循环添加视图动态地布局。
2:在布局中添加所有可能的视图,并根据条件将它们制作成INVISIBLE,GONE,VISIBLE,。
哪种方法比其他方法更好,上述方法之间是否存在性能差异?
这是根据情况需要的。 如果您不知道在运行时需要多少视图,那么动态是最好的。 如果您的视图数量有限,那么对于该作品使用xml。 都是一样的,但根据情况有意义。
你的情况动态视图是最好的。
我认为你需要这种情景
for(List num: list){
if(num.gettype().equalsIgnoreCase("B")){
// add view
}else if(num.gettype().equalsIgnoreCase("A")){
// add view
}else if(num.gettype().equalsIgnoreCase("E")){
// add view
}else ...
}
像
我wuold说,这更多的是一种设计水平的问题。
如果您的设计遵循MVC模式,则视图必须代表在模型中维护的某些对象。请考虑这些视图的支持对象(模型对象),并根据实际使用情况来决定。
现在,你的方法来了:
动态添加视图到布局是好的。如果您的用例需要频繁添加和删除它们,您需要小心地从布局中移除每个视图 - 仅仅因为您无法将子视图添加到父项两次。
我不建议使用可见性属性管理视图。只要您添加更多视图并随时更改用例,您手动跟踪所有视图状态的逻辑就会变得复杂。我会说,再考虑让你的设计万无一失,首先遵循一些常见的模式,如MVC - 这将大大简化你的实现,你可以从许多常见的陷阱中拯救自己。 (例如,电话方向更改和您的活动重新启动...等等)
你的问题有点含糊! 您是否指编程工作效率? 如果是,那么您可以根据视图的数量选择任何方法。如果视图数量在运行时发生更改,则动态添加视图是很好的。但是,如果它是静态的,那么你应该更喜欢通过xml来添加它们。另外,如果你知道最大数量的视图,那么你可以简单地将所有的视图都放在xml中,并且在运行时只需将可见性设置为Gone(如果不想显示空格)或Invisible(如果要显示空格处)。
或者你也许是指性能!是吗?如果你详细解释这个问题会很好。
如果视图属于同一类型,则可能需要使用适配器(例如RecyclerView)(从设计角度)。 – natario
我不使用任何listview,它只是一个简单的布局。 – dora
但你可以。然而,对于3-5个观点,应该没有什么大的性能差异。 – natario