web-dev-qa-db-ja.com

ビューの要素を反復処理する方法

ラジオ、入力、ボタンのあるビューがあり、それをクリックすると、すべての入力に情報が含まれていることを確認したいと思います。アクティビティ内のビューの要素を反復処理し、すべてのテキストビューが前述の要件を満たしているかどうかを確認するにはどうすればよいですか?ありがとう。

59
xain

私は現時点では持っていないコードで似たようなことをしましたが、メモリからは次のようになります(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;
}
118
kcoppock

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);
        }
    }
} 
18
Kalimah Apps

onClickListenerは_View v_オブジェクトを提供します。 View rV = v.getRootView()を使用して、フォームに自分自身を配置します。次に、rV.findViewWithTag( ... )またはrV.findViewByID(R.id. ... )を使用して、フォーム要素を見つけます。

0
gssi