0

我是 Android 开发的初学者,非常感谢您在这方面的帮助。

我有一个 android 活动,当用户单击一个按钮时,它会创建一个 Checkbox 和一个 EditText。用户可以自由添加他喜欢的任意数量的复选框/编辑文本。

这是添加到活动中的视图的 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <CheckBox
            android:id="@+id/checkBox1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <EditText
            android:id="@+id/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10" >

            <requestFocus />
        </EditText>

    </LinearLayout>

</LinearLayout>

这是java代码:

public void onclickplus (View view){

        LayoutInflater inflate = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final View view1 = inflate.inflate(R.layout.row_checkitem, null);
        mainLayout.addView(view1);
        count = count +1;

}

我的问题是,我们如何在实际的 java 代码中访问这些复选框和添加的 EditText,以便我可以将它们的数据保存到我的数据库中。

如果这些对象预先确定,我会做例如:

EditText text1;
text1 = (EditText) findViewById(R.id.editText1);
text1.getText().toString();

等等,以访问editText的值。

然而,在这种情况下,这些对象在活动启动时并不存在。

你能帮我吗?谢谢。

4

2 回答 2

0

你可以看看这个解决方案:

动态添加 EditText(s) 并检索值 - Android

他们所做的是动态添加多个 EditText 字段并将它们保存在列表中以便以后访问它们。您只需要稍微重写一下,还可以添加复选框。

于 2013-04-12T11:34:23.277 回答
0

多亏了 D.Wonnik 的帮助,我终于实现了我想做的事情。

我放弃了 LayoutInflater 方法,而是使用了 TableLayout 和 TableRows。

这样,用户可以通过单击“+”按钮添加包含复选框和 EditText 的 TableRows,并且他还可以通过单击“-”按钮在他认为合适的情况下删除它们。我也可以通过这种方式检索它们的值。

这是代码:

LinearLayout mainLayout;
    TableLayout tablelayout;
    TableRow[] tableRow;
    int count;
    EditText[] ed;
    CheckBox[] cb;

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        mainLayout = (LinearLayout)findViewById(R.id.LinearLayout1);
        tablelayout = new TableLayout(this);
        mainLayout.addView(tablelayout);
        ed = new EditText[10];
        cb = new CheckBox[10];
        tableRow = new TableRow[10];

    }

public void onclickplus (View view){


        ed[count] = new EditText(this);
        ed[count].setId(count);
        cb[count] = new CheckBox(this);
        cb[count].setId(count);
        tableRow[count] = new TableRow(this);

        tablelayout.addView(tableRow[count]);

        tableRow[count].addView(cb[count]);
        tableRow[count].addView(ed[count]);

        count = count +1;

}

public void onclickminus (View view){


        if (count>0){

            count = count -1;
            tablelayout.removeView(tableRow[count]);
    }

    }

感谢 D.Wonnik 为我指明了正确的方向!

于 2013-04-13T10:47:25.537 回答