0

それぞれ 10 個のボタンを表示する 5 つのアクティビティがあります。ボタンは、データベースからのデータに基づいて表示または非表示になります。現在、5 つのアクティビティすべてでまったく同じコードを使用しています。コードを複製する必要がないように、各アクティビティに含めることができる単一のモジュールを作成するにはどうすればよいですか?

現在、各モジュールのループ内に同じコードを含めています。

if ( i == 1 ) ((Button) findViewById(R.id.btn1 )).setVisibility( visible ) ;
if ( i == 2 ) ((Button) findViewById(R.id.btn2 )).setVisibility( visible ) ;
if ( i == 3 ) ((Button) findViewById(R.id.btn3 )).setVisibility( visible ) ;
if ( i == 4 ) ((Button) findViewById(R.id.btn4 )).setVisibility( visible ) ;
if ( i == 5 ) ((Button) findViewById(R.id.btn5 )).setVisibility( visible ) ;
4

1 に答える 1

1

まず、コードを短くするために、ID の配列を作成し、i をインデックスとして使用できます。

int ids[] = { R.id.btn1, R.id.btn2, R.id.btn3, R.id.btn4,R.id.btn5};

// ....

if (i >= ids.length) {
  // some error
}
else {
    ((Button) findViewById(ids[i] )).setVisibility( visible );
}

ボタンがアクティビティごとに異なる場合は、静的メソッドを作成できます。

public static boolean setVisible(int[] ids, int i) {
    if (i >= ids.length) {
        return false;
    }
    else {
        ((Button) findViewById(ids[i] )).setVisibility( visible );
        return true;
    }    
}

それらがすべて同じであれば、静的メソッドと同じクラスに静的配列として配列を作成し、インデックスのみを渡すことができます。

于 2011-08-07T01:48:20.347 に答える