Android 在运行时加载动态布局

Android 在运行时加载动态布局,android,layout,Android,Layout,我有一个Android应用程序,它使用Web服务加载测验。该测验由几个问题组成,因此我需要动态构建布局,因为问题的数量可能会有所不同 我的界面是这样的: <LinearLayout android:orientation="vertical"> <ViewFlipper> Question and possible answers ... </ViewFlipper> <HorizontalScrollView> one button dyna

我有一个Android应用程序,它使用Web服务加载测验。该测验由几个问题组成,因此我需要动态构建布局,因为问题的数量可能会有所不同

我的界面是这样的:

<LinearLayout android:orientation="vertical">
<ViewFlipper>

Question and possible answers ...

</ViewFlipper>
<HorizontalScrollView>
one button dynamically created for each question so I can navigate through the quiz...
</HorizontalScrollView>
我创建了另一个xml,其中包含一个布局示例,用于显示应为每个问题设置并注入ViewFlipper中的问题和答案

我的问题是,做这项工作的正确方法应该是什么?我是否需要在viewflipper中手动创建和插入所有视图,或者可以使用我创建的模板

每个问题还将有一些按钮来选择答案,我需要将结果保存到我可以提交给服务器并计算最终分数

即使我必须更改应用程序的结构以使其更易于编码,我也希望能有一些想法来实现这一点


谢谢

我建议在运行时在代码中创建和插入小部件。否则,您将从使用的XML布局中获得固定数量的可用项,除非您随后开始动态地创建小部件并将其添加到该布局中,这是您可以立即执行的操作

您所需要做的就是获取要向其中添加项目的视图的句柄,创建所需的小部件,然后调用目标视图的addView方法。下面是一个从我编写的一些测试代码中动态添加多个文本视图的示例:

//Getting String[] data from intent
      String parts[] = myIntent.getStringExtra("parts");

      int length = parts.length;

      //Control ID's must NOT be zero, starting at 10
      int ids = 10; 
      for (int i = 0; i < length; i++) 
      {       
          RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
          TextView nextItem = new TextView(this);

      //Again, NEVER ZERO 
       nextItem.setId(ids); 
       nextItem.setText(parts[i]);
      //Checking if this is the first item added and setting it to be below the info widget (you can use any widget with an ID in your view)
       if(i==0) 
        { 
            params.addRule(RelativeLayout.BELOW, R.id.info); 
        } 
       else
        {
            params.addRule(RelativeLayout.BELOW, ids-1); 
        }
        nextItem.setLayoutParams(params);
        thisView.addView(nextItem, params);
        ids++; 
       }
      }

你想过像ListView或ViewPager这样的AdapterView吗?