この質問がスタックに追加されているのを見たことがありますが、情報はまだ役に立たなかったり成功したりしていないので、よくわかりません。
私がやろうとしていることの要点:
たとえば、xml、some_details_view.xml で定義されたレイアウトがあります。
setContentView(R.layout.some_details_view);
親相対レイアウト、線形ヘッダー レイアウト、線形フッター レイアウト、いくつかのラベルを保持する相対レイアウトを含む中央スクロール レイアウト (テキスト ビューの値型) を使用してレイアウトされたテキスト ビューが多数あります。そして、スクロール ビューの相対レイアウトの下部に、現在フレーム レイアウトをプレース ホルダーとして配置しています。
対応するアクティビティの作成時に、前のアクティビティから渡されたデータを使用して、それぞれのテキスト ビューにテキストを設定しました。基本的なもの。
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/white" >
<LinearLayout
android:id="@+id/header"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true" >
...some header content
</LinearLayout>
<LinearLayout
android:id="@+id/footer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="vertical" >
..some footer content
</LinearLayout>
<ScrollView
android:id="@+id/scroll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/footer"
android:layout_below="@+id/header"
android:layout_margin="5dip" >
<RelativeLayout
android:layout_width="fill_parent"
android:id="@+id/relativeScroll"
android:layout_height="wrap_content" >
...text views in relative layout
<FrameLayout
android:id="@+id/placeholder"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/moreInfoValue" />
</RelativeLayout>
</ScrollView>
</RelativeLayout>
特定のデータのテキスト ビューを設定した後、非同期タスクを使用して、静的フォーム レイアウトの下部に履歴リスト タイプとして表示する追加データを取得します。0 個以上の項目がある可能性があるため、1 つ以上のテキスト ビューを追加するか、まったく追加しません。
メインUIスレッドで実行することを理解している実行後では、既存のコンテナレイアウト/ビューグループを見つけて、新しいテキストビューを追加する新しいリニアレイアウトを追加するか、新しいテキストビューを直接追加します既存のコンテナ レイアウトに。
これが私が試した最新のものです:
ViewGroup mContainer = null; //defined as member variable of activity class and instatiated in on create
mContainer = (ViewGroup)findViewById(R.id.placeholder); //set in on create
LinearLayout ll = new LinearLayout(context); //on post execute of async task
ll.setOrientation(LinearLayout.VERTICAL);
mContainer.addView(ll); //add a new linear layout to an existing container layout
//add some new text view widgets items dynamically
for(NewDisplayItem item : items)
{
TextView tv = new TextView(context);
tv.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
tv.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
tv.setText(item.getSomeText());
ll.addView(tv); //add text view to new linear layout
}
UI が読み込まれると、上記のコードを使用してステップスルーし、コントロールが追加されるのを確認した後、新しい項目がレイアウトに追加されません。
それが何であるかはわかりませんが、機能していないという事実に加えて、このアプローチについて何かが正しくないようです。アクティビティが読み込まれると、すべての静的ビューが設定され、表示されます。ローディング ダイアログをポップアップし、非同期タスクをステップ実行すると、動的コントロールが 1 つずつレイアウトに追加されるのを期待できますか?