2

我想在android中创建动态表(自定义行数和列数)。最小 SDK 为 3.0

我想通过以下两种方式之一来装箱:

1) 通过创建新的 TextView

TableRow tr = ....;

for ( i = 0; i < NumOfRows .... ) {
    TextView tv = new TextView(this);
    tv.setLayoutParams(...);
    tv.setText("Text I wanna to see");
    tr.add(tv);
}

2) 通过充气机

LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

for ( i = 0; i < NumOfRows .... ) {
    TextView tv = (TextView) mInflater.inflate(R.layout.my_cell_layout, null, false)
                    .findViewById(R.id.my_cell_item);
    tv.setText("Text I wanna to see");
    tr.add(tv);
}

3)你的方式:)

什么更快?我应该选择什么?enter code here

4

2 回答 2

4

一切按照您的要求,哪个更好。

来自链接http://www.aslingandastone.com/2010/dynamically-sharing-android-views/

因为可以在 XML 或代码中创建布局,所以您可能无需进行动态 XML 布局加载就可以做到。话虽如此,我认为为什么要这样做有一些明显的优势:

代码清洁度。在代码中做除了基本布局之外的任何事情都会变得非常混乱,非常快。代码重用。使用一两行代码将 XML 布局扩展为指定视图非常容易。创建代码内布局所需的对象会导致不必要的垃圾收集。根据 Android Designing for Performance 文章,“尽可能避免创建短期临时对象”。属性可用性。在 XML 布局中定义视图会公开对象方法并不总是可用的属性。

* 可能的缺点:

与在代码中定义布局相比,进行 XML 布局需要更多时间,尤其是在只有一两个界面元素需要更改的情况下。*

于 2012-05-15T14:11:56.597 回答
0

要找出哪个更快,请实现这两种方法并使用方法分析实用程序 TraceView。话虽如此,在进行更改时维护 XML 文件比修改代码更容易。所以,如果我是你,我更喜欢技术#2。

于 2012-05-15T14:08:38.923 回答