如何在我的Activity中按需添加Edittexts或Layout-blocks?

时间:2013-11-07 01:55:16

标签: android android-layout

这有点难以解释,这可能是我到目前为止在网上找不到任何解决方案的原因......

我有一个包含两个变量的类 - 一个String和一个String的LinkedList:

String name;
LinkedList<String> stringlist;

stringlist通常在1-4个字符串之间保存。现在我想创建一个Activity,它显示该类中对象的内容,并根据LinkedList中的值的数量动态显示EditText-fields。

我认为当列表中有4个值时,它看起来像这样:

Title: <name>
=============
Value: <stringlist[0]>
Value: <stringlist[1]>
Value: <stringlist[2]>
Value: <stringlist[3]>

...如果只有一个值,就像这样:

Title: <name>
=============
Value: <stringlist[0]>

如何定义我的布局xml文件才能执行此操作?我只在布局文件和代码中声明我的“TextView-EditText-Combination”一次以重新打印它,直到它匹配stringlist.length()?我可以以某种方式对整个布局块进行重复吗?

1 个答案:

答案 0 :(得分:0)

// try this way hope this will help you solve your problem.

<强> my.xml          

    <EditText
        android:id="@+id/edtTitle"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:hint="Title"/>

    <LinearLayout
        android:id="@+id/lnrDynamicString"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_marginTop="5dp"
        android:orientation="vertical">

    </LinearLayout>

</LinearLayout>

<强> MyActivity

public class MyActivity extends Activity {

    My my;
    private EditText edtTitle;
    private LinearLayout lnrDynamicString;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my);

        edtTitle =(EditText) findViewById(R.id.edtTitle);
        lnrDynamicString=(LinearLayout)findViewById(R.id.lnrDynamicString);

        my = new My();
        my.setTitle("MyTitle");
        LinkedList<String> tempString = new LinkedList<String>();
        tempString.add("Child1");
        tempString.add("Child2");
        tempString.add("Child3");
        tempString.add("Child4");
        tempString.add("Child5");
        my.setStringlist(tempString);

        edtTitle.setText(my.getTitle());
        for (int i=0;i<my.getStringlist().size();i++){
            EditText edtChild = new EditText(this);
            edtChild.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            edtChild.setId(i);
            edtChild.setText(my.getStringlist().get(i));
            lnrDynamicString.addView(edtChild);
        }


    }

}

**My**
public class My {
    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    private String title;

    public LinkedList<String> getStringlist() {
        return stringlist;
    }

    public void setStringlist(LinkedList<String> stringlist) {
        this.stringlist = stringlist;
    }

    private LinkedList<String> stringlist;
}