2

私はAndroidを初めて使用します。現在、コントロールの数を取得する方法を見つけようとしています(Androidでこれらを呼び出す方法がわかりません。つまり、4つのテキストビュー、2つの編集テキスト、3つのボタンがあるようです。全部で 9 個の「コントロール」があります)、それらを数える方法はありますか?

4

1 に答える 1

3

Android ではビューと呼ばれます。はい、ボタンも。getChildCount() を使用できますが、ビュー内にビューがある場合は再帰的に行う必要があります。私がすることは、あなたのベースビューを取得してから、次のようなものを使用することです:

public int getViewCount(View view) {
    int viewCount = 1;
    if(view instanceof ViewGroup) {
        viewCount += countChildren((ViewGroup)view);
    }
    return viewCount;
}

public int countChildren(ViewGroup viewGroup) {
    int viewCount = 0;
    for(int i = 0; i < viewGroup.getChildCount(); i++){
        viewCount += getViewCount(viewGroup.getChildAt(i));
    }
    return viewCount;
}

複雑なのは、子を持つことができるのは ViewGroup のみですが、Button などは View のインスタンスであり、ViewGroup のインスタンスではないという事実です。

ViewGroupsをカウントしたくない場合は、これを試してください:

public int getViewCount(View view) {
    int viewCount = 1;
    if(view instanceof ViewGroup) {
        viewCount = 0;  // Uncounts for ViewGroups, but still checks them for Views.
        viewCount += countChildren((ViewGroup)view);
    }
    return viewCount;
}

public int countChildren(ViewGroup viewGroup) {
    int viewCount = 0;
    for(int i = 0; i < viewGroup.getChildCount(); i++){
        viewCount += getViewCount(viewGroup.getChildAt(i));
    }
    return viewCount;
}
于 2013-05-17T04:19:36.717 に答える