Android,动态更改视图,添加/删除新组件

时间:2011-11-10 11:51:25

标签: java android

我是一个Android新手,请原谅我,如果这个问题很简单。

基本上我想把一个java项目移植到Android上。我的java应用程序中的视图组件根据模型动态更改。即,正在显示的模型可能需要n个复选框或n个单选框,具体取决于传递给视图的枚举类型。

在我的java显示中,这是通过嵌套循环实现的,每次将组件添加到屏幕时都带有n个数字。例如代码的简化版本:

if (type == TYPE.CHECKBOXES){
for (int i = 0; i < n ; i++){
add(new JCheckBox()); 
}}

每次按下一个按钮(每次更改类型)时,都会对视图进行处理。在android中我如何动态添加和删除组件,还是我需要为每种类型设置一个新视图?

非常感谢 萨姆

2 个答案:

答案 0 :(得分:2)

就像在HTML / CSS中一样,您可以创建View元素并在运行时将它们添加到您的布局中。只是做一些谷歌搜索的例子。这是一个很好的博客示例:http://android-elements.blogspot.com/2011/05/adding-views-to-layout-dynamically.html

答案 1 :(得分:1)

在Java中,您可以使用JPanel以及特定布局(即BorderLayoutFlowLayout等)管理布局。 您将组件添加到JPanel,然后将JPanel添加到父级或根布局。

一个小例子(如你所说:)

if (type == TYPE.CHECKBOXES){
     for (int i = 0; i < n ; i++){
          mayPanel.add(new JCheckBox()); 
     }
}

在Android中,您使用具有特定子类布局设计的ViewGroup来管理您的布局(即LinearLayoutFlowLayout非常相似,RelativeLayout可能会被视为BorderLayout

您可以像JPanel

一样使用这些布局
if (type == TYPE.CHECKBOXES){
     LinearLayout myPanel = new LinearLayout(this);
     for (int i = 0; i < n ; i++){
          CheckBox chk=new CheckBox(this);  
          chk.setText("Hello");
          myPanel.addView(chk); 
     }
     myRootPanel.addView(myPanel);
}

只是一个补充:Java中的Component在Android中称为View。 Android中的大多数控件(也称为ButtonEditTextImageButtonImageView)都是View的子类。