2

Androidで動的テーブル(行と列のカスタム数)を作成したいと思います。最小SDKは3.0です

私は2つの方法のいずれかを介してそれをクレートすると思います:

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-changing-android-views/

レイアウトはXMLまたはコードのいずれかで作成できるため、動的なXMLレイアウトの読み込みを行わなくても実行できる可能性があります。そうは言っても、なぜそうしたいと思うのかについては、いくつかの明らかな利点があります。

コードの清浄度。コードで基本的なレイアウト以外のことを行うと、非常に面倒で非常に高速になる可能性があります。コードの再利用。1行または2行のコードパフォーマンスを使用して、XMLレイアウトを指定されたビューに拡張するのは非常に簡単です。コード内レイアウトに必要なオブジェクトを作成すると、不要なガベージコレクションが発生します。Android Designing for Performanceの記事によると、「可能であれば、短期間の一時オブジェクトの作成は避けてください」。属性の可用性。XMLレイアウトでビューを定義すると、オブジェクトメソッドで常に使用できるとは限らない属性が公開されます。

*考えられる欠点:

特に変更が必要なインターフェイス要素が1つまたは2つしかない場合は、コードでレイアウトを定義するよりもXMLレイアウトを実行する方が時間がかかります。*

于 2012-05-15T14:11:56.597 に答える
0

どちらが高速かを確認するには、両方のメソッドを実装し、メソッドプロファイリングユーティリティであるTraceViewを使用します。そうは言っても、コードを変更するよりも、変更を加えるときにXMLファイルを維持する方が簡単です。ですから、もし私があなたなら、テクニック#2を好みます。

于 2012-05-15T14:08:38.923 に答える