0

私は Android 開発の初心者です。

ユーザーがボタンをクリックすると、Checkbox と EditText を作成する Android アクティビティがあります。ユーザーは、好きなだけ Checkboxes/EditTexts を自由に追加できます。

これは、アクティビティに追加されるビューの 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 を動的に追加して値を取得する – 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 に答える