0

ユーザーがフォームに入力できるようにするAndroidプロジェクトに取り組んでいます。

下の図は、フォームのさまざまなレイアウトを示しています。 これが私のフォームです

黒のレイアウト (LinearMain) は、私の主要な線形レイアウトです。緑色のもの (LinearForm) は、フォームの行を記述します。

LinearMain.addView(LinearForm);

青いもの (LinearDescription) には、入力するフォームの行の説明が含まれています。

LinearForm.addView(LinearDescription);

灰色の線形レイアウトは、私のコントロールを説明しています。コントロールは、EditText、ボタン、または CheckBox にすることができます。

たとえば、LinearForm.addView(LinearButton)

フォームに入力した後、EditText のテキストを取得したいので、CheckBox がチェックされているかどうかを確認します。既に ArrayList (例 ArrayList) を使用しようとしていますが、あまり役に立ちません。

これを理解する別の方法はありますか?

4

4 に答える 4

2

ビューを正確に把握していないため、ここでは、インスタンスを使用して例外を回避することが重要です。

ViewGroupはすべてのViewGroupを拡張する抽象クラスであり、たとえばLinearLayoutはViewGroupです。

 if(ViewGroup.getChildAt(int) instanceof Checkbox){

//do sommethng here
}else if(ViewGroup.getChildAt(int) instanceof Button){

//do sommethng here
}else if(ViewGroup.getChildAt(int) instanceof TextView){

//do sommethng here
}else if(ViewGroup.getChildAt(int) instanceof EditText){

//do sommethng here
}
于 2013-03-11T11:23:10.190 に答える
1

View に id を設定し、それがどのビューであるかを気にせずに、 forまたはfor でLinearButton.setId(); テキストを取得できます。using findViewById(R.id.chosenId).getText().toString();EditTextfindViewById(R.id.chosenId).isChecked();CheckBox

もう 1 つの方法は、ビューの arrayList にビューを保存し、この配列を使用してそれらにアクセスすることです。

于 2013-03-11T11:15:47.027 に答える
1

ViewGroup.getChildAt(int)ここに文書化されています

for ループを作成して の子を通過しLinearLayout、対応する子が存在するかどうかを確認instanceof CheckBoxして値を取得できます((CheckBox) getChildAt(i)).isChecked()

サンプルコード:

LinearLayout ll;

for ( int i = 0; i < ll.getChildCount(); i++ ) {
    View child = ll.getChildAt(i);
    if ( child instanceof CheckBox ) {
        boolean checked = ((CheckBox) child).isChecked();
    }
}
于 2013-03-11T11:15:14.257 に答える
0

でレイアウトを作成し、xml各ビューの ID を設定しましたか? EditTextはいの場合は、を使用してオブジェクトを作成し、 のメソッドをfindViewById(R.id.edittext)使用して からテキストを取得する必要があります。そして、あなたのために使用することができます。getText()EditTextEditTextCheckBoxfindViewById(R.id.chosenId).isChecked()

于 2013-03-11T11:30:04.583 に答える