我有一个像这样的xml活动布局:
<ScrollView>
<LinearLayout>
<TableLayout>
<TableRow>
....... // around 4 rows per table
</TableRow>
</TableLayout> // around 10 such table
.
.
.
</LinearLayout>
</ScrollView>
每个TableLayout(因此TableRows)包含类似的内容。例如,在游戏应用中,我们有每个行的等级,分数,进度条,开始按钮。 我的问题是,这是更好的设计,将所有小部件放在10个TableLayout 的xml布局中,或者我应该添加上面的10个TableLayout 以编程方式。(我需要获取)引用行上的每个小部件并设置其值)。哪种方式更有效,更受欢迎?
答案 0 :(得分:0)
我只有一个<include>
标记,并为每个单元格提供一个ID。
有关详细信息:http://developer.android.com/training/improving-layouts/reusing-layouts.html
答案 1 :(得分:0)
首选方法是以编程方式执行此操作。即使您现在只有固定数量的游戏(10),也可以从外部数据源轻松读取。如果发生这种情况,您可能不知道有多少游戏可能需要提前显示。
如果是这种情况,听起来你正在使用TableLayout有效地实现ListView。您可能想要考虑仅实现ListView,并在以后为您节省一些麻烦。
答案 2 :(得分:0)
我想用323go的建议表格和我最新的观察来回答我的问题。
当重复查看视图并从数据库等来源获取数据时,使用列表视图是有效的。
在我的情况下,我有一个LinearLayout,里面有很多TableLayout,每个都与一个级别相关。在每个TableLayout内部,与得分相关的数据,没有。拼图解决了,显示状态的进度条在那里。如果我已经使用了TableLayout,我将需要管理许多变量集和额外的代码来正确地用值填充视图。
这就是我使用ListView并将 TableLayout设置为ListView项目的原因。我使用自定义游标适配器将数据与视图绑定。
用于显示级别相关数据的TableLayout在使用ListView之前:
<ScrollView>
<LinearLayout>
<TableLayout>
<TableRow>
....... // around 4 rows per table
</TableRow>
</TableLayout>
<TableLayout>
<TableRow>
....... // around 4 rows per table for score, no. of puzzle solved etc.
</TableRow>
</TableLayout>
.
.
.
. // around 10 such TableLayout
</LinearLayout>
</ScrollView>
TableLayout用于在使用ListView后显示级别相关数据:
<LinearLayout>
<TableLayout>
<TableRow>
.
.
</TableRow> // around 4 rows per table for score, no. of puzzle solved etc.
</TableLayout> // only one such TableLayout
</LinearLayout>