0

私はJavaとAndroidを始めたばかりです。

以下は私のコードで、アクティビティにすべてのボタンを追加して非表示にします。質問: とにかく、アクティビティにすべてのボタンをリストせずに自動的に追加する方法はありますか? listA.addall を見ましたが、アクティビティをコレクションとして追加する方法がわかりませんでした。

これの合理的な理由は、ボタンの数を変更してもコードが機能するようにしたい場合があるからです。

public void setup2(){
    List<Button> listA = new ArrayList<Button>();

    listA.add((Button)findViewById(R.id.button1));
    listA.add((Button)findViewById(R.id.button2));
    listA.add((Button)findViewById(R.id.button3));
    listA.add((Button)findViewById(R.id.button4));
    listA.add((Button)findViewById(R.id.button5));

    for (Button item : listA)
        item.setVisibility(View.INVISIBLE);
}
4

2 に答える 2

1

はい、それがおそらく最もクリーンな方法です。しかし、あなたのボタンがすべて同じように名前が付けられている場合 (button_1、button_2 など)、ID を直接参照する代わりに、文字列を介して検索できます。以下は、ボタンを文字列でフェッチする例です。

int resID = getResources().getIdentifier("button_%i", "id", getPackageName());
Button addButton = (Button) findViewById(resID);

次に、すべてのボタンをループできます。

于 2013-02-11T22:04:50.680 に答える
0

ボタンが次のようなビューグループにあると仮定しますLinearLayout

for (int i = 0; i < layout.getChildCount(); i++) {
        View v = layout.getChildAt(i);
        if (v.getClass() == Button.class) {
            listA.add(v);
        }
} 

layoutボタンを含むレイアウトへの参照です。

これは、レイアウト内の各子ビューを単純に反復処理し、そのクラス タイプと比較して、Buttonそうであればコレクションに追加します。

于 2013-02-11T22:00:30.250 に答える