Android 我如何循环使用一堆按钮来减少代码?

Android 我如何循环使用一堆按钮来减少代码?,android,Android,您好我有一个代码,我需要在同一类型的不同对象上执行相同的操作,比如初始化一组按钮,每次设置文本的值,现在我的代码如下: public void inizializzazioneGrafica(){ txtprimaCarta = (TextView)findViewById(R.id.txt_primaCarta); punteggioG1 = (TextView)findViewById(R.id.punteggioG1); punteggioG2 = (TextVi

您好
我有一个代码,我需要在同一类型的不同对象上执行相同的操作,比如初始化一组按钮,每次设置文本的值,现在我的代码如下:

 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循环,但我不知道如何每次调用不同的按钮,因为它们有一个唯一的名称,有人能帮我吗?

要减少用于绑定视图的代码(在您的
方法中),可以使用library。您的代码如下所示:

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
,你可以使用二维数组或列表(比如ArrayList),但它只会给你的代码带来复杂性。努力提高效率而不是效率。

你可以试试Kotlin,减少你需要编写的样板代码的数量。用java我怎么能做到呢?我看不到任何更简单的方法来实现你正在做的事情。您可能可以创建一些集合,在这些集合中,您可以根据类似的属性对按钮进行分组,然后在集合中循环。这可能会缩短代码,但没有其他好处。当您要添加一个新按钮,或者想要更改按钮的属性时,您需要进行一些重构。所以根本没有好处。