我已经看到堆栈中添加了这个问题,但信息还没有帮助或成功,所以我仍然不确定。
我正在尝试做的事情的要点:
我在 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 加载时,在单步执行并观察使用上面的代码添加控件后,我看不到新项目添加到我的布局中。
不确定它是什么,但除了它不起作用之外,这种方法似乎有些不对劲。当活动加载时,所有静态视图都已设置并显示在视图中。我弹出一个加载对话框,逐步完成异步任务内容,我想希望看到动态控件一一添加到布局中?