【问题标题】:I need to pass 16 parameters to one method repeated times我需要将 16 个参数重复传递给一种方法
【发布时间】:2017-08-10 11:48:24
【问题描述】:

我正在做一种减少和增加数字的按钮,但我需要 16 个单独的数字,之后我需要对数字进行计算。我有一个代码来减少、增加和计算这个数字,但我需要将数字传递给 methodResult。我不能为每个参数传递参数,因为我认为这不是生产性的并且会花费处理,因为这个应用程序是为 android 开发的。

public class TaxasFragment extends Fragment {
    //Upward i have some variable declarations and etc etc...
    //Decrease button function
    int contador = 0;
    while(contador < 16) {
        buttonsDiminuir.get(contador).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                switch (view.getId()) {
                    case R.id.botao_diminuir:
                        if(valorExibido[0] > 0) {
                            valorExibido[0]--;
                            String textoExibido = "" + valorExibido[0];
                            buttonsExibir.get(0).setText(textoExibido);
                        }
                        break;
                    case R.id.botao_diminuir2:
                        if(valorExibido[1] > 0) {
                            valorExibido[1]--;
                            String textoExibido2 = "" + valorExibido[1];
                            buttonsExibir.get(1).setText(textoExibido2);
                        }
                        break;
                    case R.id.botao_diminuir3:
                        if(valorExibido[2] > 0) {
                            valorExibido[2]--;
                            String textoExibido3 = "" + valorExibido[2];
                            buttonsExibir.get(2).setText(textoExibido3);
                        }
                        break;
                    case R.id.botao_diminuir4:
                        if(valorExibido[3] > 0) {
                            valorExibido[3]--;
                            String textoExibido4 = "" + valorExibido[3];
                            buttonsExibir.get(3).setText(textoExibido4);
                        }
                        break;
                    case R.id.botao_diminuir5:
                        if(valorExibido[4] > 0) {
                            valorExibido[4]--;
                            String textoExibido5 = "" + valorExibido[4];
                            buttonsExibir.get(4).setText(textoExibido5);
                        }
                        break;
                    case R.id.botao_diminuir6:
                        if(valorExibido[5] > 0) {
                            valorExibido[5]--;
                            String textoExibido6 = "" + valorExibido[5];
                            buttonsExibir.get(5).setText(textoExibido6);
                        }
                        break;
                    case R.id.botao_diminuir7:
                        if(valorExibido[6] > 0) {
                            valorExibido[6]--;
                            String textoExibido7 = "" + valorExibido[6];
                            buttonsExibir.get(6).setText(textoExibido7);
                        }
                        break;
                    case R.id.botao_diminuir8:
                        if(valorExibido[7] > 0) {
                            valorExibido[7]--;
                            String textoExibido8 = "" + valorExibido[7];
                            buttonsExibir.get(7).setText(textoExibido8);
                        }
                        break;
                    case R.id.botao_diminuir9:
                        if(valorExibido[8] > 0) {
                            valorExibido[8]--;
                            String textoExibido9 = "" + valorExibido[8];
                            buttonsExibir.get(8).setText(textoExibido9);
                        }
                        break;
                    case R.id.botao_diminuir10:
                        if(valorExibido[9] > 0) {
                            valorExibido[9]--;
                            String textoExibido10 = "" + valorExibido[9];
                            buttonsExibir.get(9).setText(textoExibido10);
                        }
                        break;
                    case R.id.botao_diminuir11:
                        if(valorExibido[10] > 0) {
                            valorExibido[10]--;
                            String textoExibido11 = "" + valorExibido[10];
                            buttonsExibir.get(10).setText(textoExibido11);
                        }
                        break;
                    case R.id.botao_diminuir12:
                        if(valorExibido[11] > 0) {
                            valorExibido[11]--;
                            String textoExibido12 = "" + valorExibido[11];
                            buttonsExibir.get(11).setText(textoExibido12);
                        }
                        break;
                    case R.id.botao_diminuir13:
                        if(valorExibido[12] > 0) {
                            valorExibido[12]--;
                            String textoExibido13 = "" + valorExibido[12];
                            buttonsExibir.get(12).setText(textoExibido13);
                        }
                        break;
                    case R.id.botao_diminuir14:
                        if(valorExibido[13] > 0) {
                            valorExibido[13]--;
                            String textoExibido14 = "" + valorExibido[13];
                            buttonsExibir.get(13).setText(textoExibido14);
                        }
                        break;
                    case R.id.botao_diminuir15:
                        if(valorExibido[14] > 0) {
                            valorExibido[14]--;
                            String textoExibido15 = "" + valorExibido[14];
                            buttonsExibir.get(14).setText(textoExibido15);
                        }
                        break;
                    case R.id.botao_diminuir16:
                        if(valorExibido[15] > 0) {
                            valorExibido[15]--;
                            String textoExibido16 = "" + valorExibido[15];
                            buttonsExibir.get(15).setText(textoExibido16);
                        }
                        break;
                }
            }
        });
        contador++;
    }

    //Increase button function
    int contador2 = 0;
    while(contador2 < 16) {
        buttonsAumentar.get(contador2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                switch (view.getId()) {
                    case R.id.botao_aumentar:
                        valorExibido[0]++;
                        String textoExibido = "" + valorExibido[0];
                        buttonsExibir.get(0).setText(textoExibido);
                        break;
                    case R.id.botao_aumentar2:
                        valorExibido[1]++;
                        String textoExibido2 = "" + valorExibido[1];
                        buttonsExibir.get(1).setText(textoExibido2);
                        break;
                    case R.id.botao_aumentar3:
                        valorExibido[2]++;
                        String textoExibido3 = "" + valorExibido[2];
                        buttonsExibir.get(2).setText(textoExibido3);
                        break;
                    case R.id.botao_aumentar4:
                        valorExibido[3]++;
                        String textoExibido4 = "" + valorExibido[3];
                        buttonsExibir.get(3).setText(textoExibido4);
                        break;
                    case R.id.botao_aumentar5:
                        valorExibido[4]++;
                        String textoExibido5 = "" + valorExibido[4];
                        buttonsExibir.get(4).setText(textoExibido5);
                        break;
                    case R.id.botao_aumentar6:
                        valorExibido[5]++;
                        String textoExibido6 = "" + valorExibido[5];
                        buttonsExibir.get(5).setText(textoExibido6);
                        break;
                    case R.id.botao_aumentar7:
                        valorExibido[6]++;
                        String textoExibido7 = "" + valorExibido[6];
                        buttonsExibir.get(6).setText(textoExibido7);
                        break;
                    case R.id.botao_aumentar8:
                        valorExibido[7]++;
                        String textoExibido8 = "" + valorExibido[7];
                        buttonsExibir.get(7).setText(textoExibido8);
                        break;
                    case R.id.botao_aumentar9:
                        valorExibido[8]++;
                        String textoExibido9 = "" + valorExibido[8];
                        buttonsExibir.get(8).setText(textoExibido9);
                        break;
                    case R.id.botao_aumentar10:
                        valorExibido[9]++;
                        String textoExibido10 = "" + valorExibido[9];
                        buttonsExibir.get(9).setText(textoExibido10);
                        break;
                    case R.id.botao_aumentar11:
                        valorExibido[10]++;
                        String textoExibido11 = "" + valorExibido[10];
                        buttonsExibir.get(10).setText(textoExibido11);
                        break;
                    case R.id.botao_aumentar12:
                        valorExibido[11]++;
                        String textoExibido12 = "" + valorExibido[11];
                        buttonsExibir.get(11).setText(textoExibido12);
                        break;
                    case R.id.botao_aumentar13:
                        valorExibido[12]++;
                        String textoExibido13 = "" + valorExibido[12];
                        buttonsExibir.get(12).setText(textoExibido13);
                        break;
                    case R.id.botao_aumentar14:
                        valorExibido[13]++;
                        String textoExibido14 = "" + valorExibido[13];
                        buttonsExibir.get(13).setText(textoExibido14);
                        break;
                    case R.id.botao_aumentar15:
                        valorExibido[14]++;
                        String textoExibido15 = "" + valorExibido[14];
                        buttonsExibir.get(14).setText(textoExibido15);
                        break;
                    case R.id.botao_aumentar16:
                        valorExibido[15]++;
                        String textoExibido16 = "" + valorExibido[15];
                        buttonsExibir.get(15).setText(textoExibido16);
                        break;
                }
            }
        });
        contador2++;
    }
}
public void methodResult() {

        int totalPropriedadesExponenciais = valorBotao1 + valorBotao2 + valorBotao3 + valorBotao4 + valorBotao5 + valorBotao6 + valorBotao7 + valorBotao8 + valorBotao9 + valorBotao10 + valorBotao11 + valorBotao12;

        int taxasTotaisSemPeso = valorBotao1*5 + valorBotao2*10 + valorBotao3*15 + valorBotao4*25 + valorBotao5*10 + valorBotao6*15 + valorBotao7*25 + valorBotao8*50 + valorBotao9*5 + valorBotao10*25 + valorBotao11*40 + valorBotao12*15;

        int taxasTotaisExcessao = valorBotao13*5 + valorBotao14*10 + valorBotao15*15 + valorBotao16*25;
}

【问题讨论】:

  • 您可以创建一个包含 16 个变量的类,这些变量将具有 getter 和 setter。然后将该类作为参数传递给 methodResult 并使用 getter 方法访问 16 个变量。
  • 这个我试过了,但是参数在进入methodResult的时候就失去了值...
  • 什么意思?它失去了它的价值?
  • 仅作记录:如果您在编写 UI 时遇到此类问题,我有一种模糊的感觉,即最终用户体验不会真的很好。人们通常不喜欢有太多需要点击的 ui 元素...

标签: java android android-studio methods


【解决方案1】:

您应该重构代码以删除 switch 语句:

private static final List<Integer> AUMENTAR_RESOURCES = ImmutableList.of(
    R.id.botao_aumentar,
    R.id.botao_aumentar2,
    R.id.botao_aumentar3,
    ...
);

private final View.OnClickListener aumentarListener =
    new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final int index =
                AUMENTAR_RESOURCES.indexOf(view.getId());
            valorExibido[index]++;
            String textoExibido = "" + valorExibido[index];
            buttonsExibir.get(index).setText(textoExibido);
        }
    };

private void hookupButtons() {
    for (index = 0; index < AUMENTAR_RESOURCES.size(); index++) {
        buttonsAumentar.get(index)
            .setOnClickListener(aumentarListener);
    }
}

【讨论】:

  • 在去掉switch语句后,我该怎么做才能同时调用16个按钮值来运行计算?
猜你喜欢
  • 2020-06-12
  • 2013-07-01
  • 2016-03-06
  • 1970-01-01
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多