2

私は現在、Android アプリケーションを作成していますが、適切に作成/設計したいと考えています。

現在、かなり頻繁に使用する相対的なレイアウトで、一連の複数のビュー (2 つの画像ビュー、3 つのテキストビュー) を使用しています。それらをすべて再グループ化するカスタム ビューを作成する方法はありますか?

今行ったことを説明するために、このスクリーンショットを撮りました。

ここに画像の説明を入力

ご覧のとおり、現在、すべてのビューを含むフレームレイアウトをコピー/貼り付けました...これは適切な方法ですか、それともよりクリーンなソリューションがありますか?

みんなありがとう

4

2 に答える 2

2

ArrayListレイアウトに配置するすべてのコンテンツをオブジェクトの中に配置するより良い方法はありません。次に、 を作成しArrayAdapterListView、このオブジェクトから を必要な方法で設定します。

この手法の利点は、メモリの消費を抑えるためにViews内部をリサイクルするビュー リサイクル メカニズムを利用できることです。ListView

要するに、次のことを行う必要があります。

1.単一行のデータを表すオブジェクトを作成します。

2.ArrayListこれらのオブジェクトの を作成します。

3. ListView を含むレイアウトを作成するか、コードを使用してメイン レイアウトに ListView を追加します。

4. 1 行のレイアウトを作成します (既に作成済みです)。

5.ViewHolderの観点からデータ行の視覚的側面を表す を作成しますViews

6.ArrayAdapter必要に応じて行を設定するカスタムを作成します。

7.最後に、これArrayAdapterListViewinに割り当てますonCreate

私が書いたこのブログ投稿を読むことで、これを実装する方法のアイデアを得ることができます:

カスタム ArrayAdapter を作成する

于 2013-04-10T15:45:35.713 に答える
0

インターフェイスビルダーの代わりにコードで行う場合は、LayoutInflatorを使用して毎回 xml からビューを作成し、それらのビューをサブビューとして LinearLayout に追加できます。これにより、新しいビューごとにコピーして貼り付けることなく、番号を変更することもできます。

LayoutInflater layoutInflator = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout ll = (LinearLayout) findViewById(R.id.yourLayout);
for(int i=0; i<numOfSubViews; i++){
    View view = layoutInflator.inflate(R.layout.yourFrameLayout, null);
    ll.add(view);
}
于 2013-04-10T15:52:24.913 に答える