OK、インクルードタグの使い方は理解できましたが、問題が発生しました。
基本的に、いくつかのTextView
sとImageView
を含むレイアウトをxmlで定義したいと思います。次に、配列全体を反復処理し、配列の内容(実行時に入力される)に応じてxmlレイアウト内のフィールドに入力します。したがって、xmlレイアウトの複数のコピーを作成し、フィールドに一意のデータを入力します。 LinearLayout
sとTextView
sには定数IDがあり、複数作成する必要があるため、このImageView
をこのように再利用する方法はわかりません。このレイアウトのコピー。
リソースを膨らませてからコピーする方法はありますか?
LinearLayout one = new LinearLayout(inflater.inflate(R.layout.home, container, false));
^残念ながら、そのようなコンストラクタはありません。
他の唯一の方法は、それをすべてプログラムで行うことですが、コードではなくビューのプロパティとLinearLayout
をxmlに含めることをお勧めします。 LinearLayout
を、あなたがコピーを作成できるテンプレートにしたいようなものです...それが可能かどうか本当にわかりません。
あなたはこれを簡単に行うことができます、あなたはそれを分解する必要があります。まず、動的ビューを挿入するレイアウトをロードします。次に、サブビューを膨らませ、必要な回数だけサブビューに入力します。次に、ビューを親レイアウトに追加し、最後にアクティビティのコンテンツビューを親ビューに設定します。
次に例を示します。
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout parent = (LinearLayout) inflater.inflate(R.layout.main, null);
for (int i = 0; i < 3; i++) {
View custom = inflater.inflate(R.layout.custom, null);
TextView tv = (TextView) custom.findViewById(R.id.text);
tv.setText("Custom View " + i);
parent.addView(custom);
}
setContentView(parent);
ここに私が挿入しているmain.xmlファイルがあります:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical" >
</LinearLayout>
そして、ここに私が膨らませ、移入し、動的に挿入するcustom.xmlビューがあります:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:orientation="horizontal" >
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="horizontal" >
<ImageView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/ic_launcher" />
<TextView
Android:id="@+id/text"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
Nyoneがまだ同様のソリューションを探している場合、どうやらinclude
を直接xmlで使用して、コードでそれらを参照することもできます。
LinearLayout row1 = (LinearLayout) findViewById(R.id.row1)
TextView text1 = row1.findViewById(R.id.text);
LinearLayout row2 = (LinearLayout) findViewById(R.id.row2)
TextView text2 = row2.findViewById(R.id.text);
出典: Romain Guy