0

スコアにゴールド/シルバー/ブロンズの賞のしきい値があるゲームがあります。ゲームは、達成された賞をSharedPreferencesファイルに保存します。キーはレベル番号です。つまり、レベル選択画面には20のレベルがあります。私のコードは次のようになります。

    private void initButtons() {
    Button b1 = ((Button) findViewById(R.id.b1));

    load = getSharedPreferences(Game.DATA, Game.GOLD);
    if(load.getInt(Integer.toString(1), 0) == 4){
    b1.setBackgroundDrawable(getResources().getDrawable(
            R.drawable.gold));
    b1.setText("1");
    b1.setTextSize(30);
    b1.setOnClickListener(this);
    }

    ((Button) findViewById(R.id.b2)).setOnClickListener(this);
    ((Button) findViewById(R.id.b3)).setOnClickListener(this);
    ((Button) findViewById(R.id.b4)).setOnClickListener(this);
    ((Button) findViewById(R.id.b5)).setOnClickListener(this);
    ((Button) findViewById(R.id.b6)).setOnClickListener(this);
    ((Button) findViewById(R.id.b7)).setOnClickListener(this);
    ((Button) findViewById(R.id.b8)).setOnClickListener(this);
    ((Button) findViewById(R.id.b9)).setOnClickListener(this);
    ((Button) findViewById(R.id.b10)).setOnClickListener(this);
    ((Button) findViewById(R.id.b11)).setOnClickListener(this);
    ((Button) findViewById(R.id.b12)).setOnClickListener(this);
    ((Button) findViewById(R.id.b13)).setOnClickListener(this);
    ((Button) findViewById(R.id.b14)).setOnClickListener(this);
    ((Button) findViewById(R.id.b15)).setOnClickListener(this);
    ((Button) findViewById(R.id.b16)).setOnClickListener(this);
    ((Button) findViewById(R.id.b17)).setOnClickListener(this);
    ((Button) findViewById(R.id.b18)).setOnClickListener(this);
    ((Button) findViewById(R.id.b19)).setOnClickListener(this);
    ((Button) findViewById(R.id.b20)).setOnClickListener(this);
}

したがって、ボタンごとに3つのif、elseifステートメントが必要になります。それはたくさんのようです。上記のコードは効率的ですか、それとも別の方法を使用する必要がありますか?

助けてくれてありがとうアンディ

4

1 に答える 1

3
private static int[] button_id{R.id.b1,R.id.b2.....};
private void initButtons() {
    for(int i=0;i<button_id.length;i++){
        Button ONE_OF_YOUR_BUTTON=getButton(button_id[i]);
        ONE_OF_YOUR_BUTTON.doStuffToIt();
    }
}


    }

private static Button getButton(int id){
    return (Button)findViewById(id));
}

}

いつでもループできます。そして、これらの種類の質問はコードレビューに属します

于 2013-01-31T23:13:42.760 に答える