是应该在xml布局中还是以编程方式绘制重复视图?

时间:2014-03-05 15:21:31

标签: android android-layout

我有一个像这样的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 以编程方式。(我需要获取)引用行上的每个小部件并设置其值)。哪种方式更有效,更受欢迎?

3 个答案:

答案 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>