ラジオ、入力、ボタンのあるビューがあり、それをクリックすると、すべての入力に情報が含まれていることを確認したいと思います。アクティビティ内のビューの要素を反復処理し、すべてのテキストビューが前述の要件を満たしているかどうかを確認するにはどうすればよいですか?ありがとう。
私は現時点では持っていないコードで似たようなことをしましたが、メモリからは次のようになります(idが "layout"の親ビューLinearLayoutを想定):
LinearLayout layout = (LinearLayout)findViewById(R.id.layout);
boolean success = formIsValid(layout);
public boolean formIsValid(LinearLayout layout) {
for (int i = 0; i < layout.getChildCount(); i++) {
View v = layout.getChildAt(i);
if (v instanceof EditText) {
//validate your EditText here
} else if (v instanceof RadioButton) {
//validate RadioButton
} //etc. If it fails anywhere, just return false.
}
return true;
}
Kcoppockによってメソッドを再帰的に適用するには、次のように変更できます。
private void loopViews(ViewGroup view) {
for (int i = 0; i < view.getChildCount(); i++) {
View v = view.getChildAt(i);
if (v instanceof EditText) {
// Do something
} else if (v instanceof ViewGroup) {
this.loopViews((ViewGroup) v);
}
}
}
onClickListener
は_View v
_オブジェクトを提供します。 View rV = v.getRootView()
を使用して、フォームに自分自身を配置します。次に、rV.findViewWithTag( ... )
またはrV.findViewByID(R.id. ... )
を使用して、フォーム要素を見つけます。