Привет
У меня есть этот код, где мне нужно выполнить одну и ту же операцию с различными объектами одного и того же типа, например, инициализировать кучу кнопок и каждый раз устанавливать значение текста, теперь мой код выглядит следующим образом:
public void inizializzazioneGrafica(){
txtprimaCarta = (TextView)findViewById(R.id.txt_primaCarta);
punteggioG1 = (TextView)findViewById(R.id.punteggioG1);
punteggioG2 = (TextView)findViewById(R.id.punteggioG2);
btn_g1_1 =(Button)findViewById(R.id.btn_g1_1);
btn_g1_2 =(Button)findViewById(R.id.btn_g1_2);
btn_g1_3 =(Button)findViewById(R.id.btn_g1_3);
btn_g2_1 =(Button)findViewById(R.id.btn_g2_1);
btn_g2_2 =(Button)findViewById(R.id.btn_g2_2);
btn_g2_3 =(Button)findViewById(R.id.btn_g2_3);
}
public void aggiornaGrafica(){
txtprimaCarta.setText(Integer.toString(tavolo.getBriscola().getNumero())+"\n"+tavolo.getBriscola().getSeme().toString());
punteggioG1.setText("Punteggio: "+Integer.toString(giocatore1.getPunteggio()));
punteggioG2.setText("Punteggio: "+Integer.toString(giocatore2.getPunteggio()));
btn_g1_1.setText(Integer.toString(giocatore1.carte.get(0).getNumero())+" "+giocatore1.carte.get(0).getSeme().toString());
btn_g1_2.setText(Integer.toString(giocatore1.carte.get(1).getNumero())+" "+giocatore1.carte.get(1).getSeme().toString());
btn_g1_3.setText(Integer.toString(giocatore1.carte.get(2).getNumero())+" "+giocatore1.carte.get(2).getSeme().toString());
btn_g2_1.setText(Integer.toString(giocatore2.carte.get(0).getNumero())+" "+giocatore2.carte.get(0).getSeme().toString());
btn_g2_2.setText(Integer.toString(giocatore2.carte.get(1).getNumero())+" "+giocatore2.carte.get(1).getSeme().toString());
btn_g2_3.setText(Integer.toString(giocatore2.carte.get(2).getNumero())+" "+giocatore2.carte.get(2).getSeme().toString());
btn_g1_1.setBottom(Color.LTGRAY);
btn_g1_2.setBottom(Color.LTGRAY);
btn_g1_3.setBottom(Color.LTGRAY);
btn_g2_1.setBottom(Color.LTGRAY);
btn_g2_2.setBottom(Color.LTGRAY);
btn_g2_3.setBottom(Color.LTGRAY);
}
Что я могу сделать, чтобы уменьшить количество строк кода?
Я подумал, может быть, используя цикл for, но я не знаю, как каждый раз вызывать разные кнопки, поскольку они имеют уникальное имя, может кто-нибудь помочь мне с этим?
Чтобы уменьшить код, используемый для представления привязки (в вашем методе inizializzazioneGrafica
), вы можете использовать библиотеку ButterKnife. Ваш код будет примерно таким:
public class YourActivity extends Activity {
@BindView(R.id.txt_primaCarta) TextView txtprimaCarta;
@BindView(R.id.punteggioG1) TextView punteggioG1;
@BindView(R.id.btn_g1_1) Button btn_g1_1;
@BindView(R.id.btn_g1_2) Button btn_g1_2;
@BindView(R.id.btn_g1_3) Button btn_g1_3;
@BindView(R.id.btn_g2_1) Button btn_g2_1;
@BindView(R.id.btn_g2_2) Button btn_g2_2;
@BindView(R.id.btn_g2_3) Button btn_g2_3;
...
public void aggiornaGrafica(){
...
}
}
Чтобы упростить вашу aggiornaGrafica
вы можете использовать 2-мерный массив или список (например, ArrayList), но это не даст вам ничего, кроме сложности в вашем коде. Стремитесь к эффективности, а не эффективности.