#java #android #arrays
#java #Android #массивы
Вопрос:
Я новичок в Java и создаю приложение для Android, используя его, я хочу иметь возможность определять, сколько переключателей включено, но не уверен, как наилучшим образом суммировать массив переключателей. В настоящее время у меня есть:
SS = new Switch[8];
SS[0] = getView().findViewById(R.id.switch1);
SS[1] = getView().findViewById(R.id.switch2);
SS[2] = getView().findViewById(R.id.switch3);
SS[3] = getView().findViewById(R.id.switch4);
SS[4] = getView().findViewById(R.id.switch5);
SS[5] = getView().findViewById(R.id.switch6);
SS[6] = getView().findViewById(R.id.switch7);
SS[7] = getView().findViewById(R.id.switch8);
submit = getView().findViewById(R.id.submitButton);
submit.setOnClickListener(new View.OnClickListener(){
public void onClick (View v) {
totalactive= IntStream.of(SS).sum();
с массивом «SS», объявленным как глобальный класс.
Спасибо
Комментарии:
1. SS несовместим с IntStream.of() — как вы определяете, включен «переключатель» или «выключен» — есть ли метод, который вы можете вызвать?
2. Я просто подшучивал над тобой, приятель, не обращай на меня внимания 😉
3. Я использую setOnCheckedChangeListener для каждого переключателя, но хочу ограничить, сколько их может включаться одновременно.
Ответ №1:
Внутри onClick
используйте for each
цикл:
totalactive = 0;
for (Switch s : SS) {
if (s.isChecked()) totalactive ;
}
Комментарии:
1. int total = SS.stream().filter(s -> s.IsChecked).count();
2. У массива @DavidZimmerman нет метода stream(), count() возвращает
long
=)3. длинный итог = Arrays.stream(SS).filter(s -> s.IsChecked).count();
4. Это решение отлично сработало, спасибо всем за помощь.
Ответ №2:
Все ответы на данный момент великолепны! Но тогда вы также могли бы сделать это старым школьным способом:
int totalactive = 0;
for(int i = 0; i < SS.length; i ){
if(SS[i].isChecked()){
totalactive ;
}
}
//Here's your result:
Log.d("sumTotal", Integer.toString(totalactive));
Бьюсь об заклад, это очень легко понять и соотнести. Я надеюсь, что это поможет. Веселого кодирования!
Комментарии:
1. Это очень напоминает C и то, к чему я собирался вернуться, но я выбрал другой просто потому, что он выглядел чище. Я уверен, что это работает так же хорошо, спасибо за совет.