2015-09-01 35 views
2

我有布局,其中可以有多个视图(确切的数字是动态决定的)。例如,我有一个布局其中它应该包含5视图在一种情况下和在其他情况下它应该包含和其他可能包含等,我知道两种方法来做到这一点。我已经在下面列出了他们两个,但我只是不确定哪一个是好的做法。添加视图的最佳方式是什么?动态还是通过XML?

途径

1:使用循环添加视图动态地布局。

2:在布局中添加所有可能的视图,并根据条件将它们制作成INVISIBLE,GONE,VISIBLE,

哪种方法比其他方法更好,上述方法之间是否存在性能差异?

+0

如果视图属于同一类型,则可能需要使用适配器(例如RecyclerView)(从设计角度)。 – natario

+0

我不使用任何listview,它只是一个简单的布局。 – dora

+0

但你可以。然而,对于3-5个观点,应该没有什么大的性能差异。 – natario

回答

0

这是根据情况需要的。 如果您不知道在运行时需要多少视图,那么动态是最好的。 如果您的视图数量有限,那么对于该作品使用xml。 都是一样的,但根据情况有意义。

你的情况动态视图是最好的。

  1. 获取您需要创建的视图的数量。
  2. 将其循环并获取要动态创建的类型。
  3. 创建并将其添加到父级布局。

我认为你需要这种情景

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 ... 
} 

+0

如果我必须展示最多8个视图,并且在一种情况下只显示一个视图并在另一个视图中显示7?.i必须将7个视图的可见性状态设置为隐形或第一个条件消失。那会是一个好方法吗? – dora

+0

你如何决定观看次数? –

+0

可否请您告诉我如何通过xml使用视图来影响性能? – dora

0

我wuold说,这更多的是一种设计水平的问题。

如果您的设计遵循MVC模式,则视图必须代表在模型中维护的某些对象。请考虑这些视图的支持对象(模型对象),并根据实际使用情况来决定。

现在,你的方法来了:

动态添加视图到布局是好的。如果您的用例需要频繁添加和删除它们,您需要小心地从布局中移除每个视图 - 仅仅因为您无法将子视图添加到父项两次。

我不建议使用可见性属性管理视图。只要您添加更多视图并随时更改用例,您手动跟踪所有视图状态的逻辑就会变得复杂。我会说,再考虑让你的设计万无一失,首先遵循一些常见的模式,如MVC - 这将大大简化你的实现,你可以从许多常见的陷阱中拯救自己。 (例如,电话方向更改和您的活动重新启动...等等)

0

你的问题有点含糊! 您是否指编程工作效率? 如果是,那么您可以根据视图的数量选择任何方法。如果视图数量在运行时发生更改,则动态添加视图是很好的。但是,如果它是静态的,那么你应该更喜欢通过xml来添加它们。另外,如果你知道最大数量的视图,那么你可以简单地将所有的视图都放在xml中,并且在运行时只需将可见性设置为Gone(如果不想显示空格)或Invisible(如果要显示空格处)。

或者你也许是指性能!是吗?如果你详细解释这个问题会很好。

相关问题