Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
#1

Заполнение массива данных циклом с интревалом (15 минут) - Android

22.07.2015, 16:09. Просмотров 316. Ответов 15
Метки нет (Все метки)

День добрый , требуется заполнить массив цифрами в формате времени от 00:00 до 23:45

с интервалом в 15 минут

скажем заходим в активити и видим список - 00:00 . 00:15 . 00:30 и т.д.
Кто подскажет как разработать такой цикл?

на данный момент есть вот такой - появляется список с 96 элементами.


Java
1
2
3
4
5
6
7
8
9
  private void initList() {
        timeChekList = new ArrayList<>();
        for (int i = 0; i < 95; i++) {
            m = new HashMap<String, Object>();
            m.put(ATTRIBUTE_NAME_TEXT, "00:00" + i);
            // m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.power);
            timeChekList.add(String.valueOf(m));
        }
    }
Нашёл поиском похожую постановку - только на PhP - перевести в Java не получ.)

Увеличение времени на 15 минут в цикле PHP

ещё вот - но похоже не подходит - http://forum.sources.ru/index.php?showtopic=389065

Есть предложения?)
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
22.07.2015, 16:10  [ТС]     Заполнение массива данных циклом с интревалом (15 минут) #2
ах да ,вот скрин.
Миниатюры
Заполнение массива данных циклом с интревалом (15 минут)  
Паблито
2014 / 1756 / 546
Регистрация: 12.05.2014
Сообщений: 6,217
Завершенные тесты: 1
22.07.2015, 17:43     Заполнение массива данных циклом с интревалом (15 минут) #3
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
        String[] lazyBitch = {
                "00:00", "00:15", "00:30", "00:45", "01:00", "01:15", "01:30", "01:45",
                "02:00", "02:15", "02:30", "02:45", "03:00", "03:15", "03:30", "03:45",
                "04:00", "04:15", "04:30", "04:45", "05:00", "05:15", "05:30", "05:45",
                "06:00", "06:15", "06:30", "06:45", "07:00", "07:15", "07:30", "07:45",
                "08:00", "08:15", "08:30", "08:45", "09:00", "09:15", "09:30", "09:45",
                "10:00", "10:15", "10:30", "10:45", "11:00", "11:15", "11:30", "11:45",
                "12:00", "12:15", "12:30", "12:45", "13:00", "13:15", "13:30", "13:45",
                "14:00", "14:15", "14:30", "14:45", "15:00", "15:15", "15:30", "15:45",
                "16:00", "16:15", "16:30", "16:45", "17:00", "17:15", "17:30", "17:45",
                "18:00", "18:15", "18:30", "18:45", "19:00", "19:15", "19:30", "19:45",
                "20:00", "20:15", "20:30", "20:45", "21:00", "21:15", "21:30", "21:45",
                "22:00", "22:15", "22:30", "22:45", "23:00", "23:15", "23:30", "23:45"};
и можно потом в цикле хоть боком, хоть сзади дописывать что угодно и форматировать что угодно
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
23.07.2015, 08:20     Заполнение массива данных циклом с интревалом (15 минут) #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Java
1
2
3
for (int h = 0; h < 24; h++)
   for (int m = 0; m < 60; m += 15)
      System.out.println((h < 10 ? "0" + h : h) + ":" + (m == 0 ? "0" + m : m));
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
23.07.2015, 09:54  [ТС]     Заполнение массива данных циклом с интревалом (15 минут) #5
Ну Паблито , в том то и фишка что бы код был идеальный сделать цикл а не писать ручками как у тебя в примере ...
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 724
23.07.2015, 10:07     Заполнение массива данных циклом с интревалом (15 минут) #6
фишка в том чтобы делать быстрее, если массив короткий иногда быстрее его "руками" написать
Паблито
2014 / 1756 / 546
Регистрация: 12.05.2014
Сообщений: 6,217
Завершенные тесты: 1
23.07.2015, 10:13     Заполнение массива данных циклом с интревалом (15 минут) #7
Цитата Сообщение от Soprano6111 Посмотреть сообщение
Ну Паблито , в том то и фишка что бы код был идеальный сделать цикл а не писать ручками как у тебя в примере
не ты ли мне в соседней теме писал?
Цитата Сообщение от Soprano6111 Посмотреть сообщение
его приём куда трудоёмкий в плане написания кода - а делается всё очень просто как я изложил выше - старая школа просто не может принять нововведений и делает всё по своему. А как известно чем проще код - тем он ценней.
Spelcrawler
523 / 493 / 111
Регистрация: 12.03.2014
Сообщений: 1,646
Завершенные тесты: 1
23.07.2015, 11:03     Заполнение массива данных циклом с интревалом (15 минут) #8
А можно еще круче)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private List<String> generateTimes(int addedField, int addedValue){
        Calendar calendar = Calendar.getInstance();
        int startDay = 1;
        calendar.set(1, 1, startDay, 0, 0, 59);
        SimpleDateFormat format = new SimpleDateFormat("HH:mm");
        List<String> times = new ArrayList<>();
        times.add(format.format(calendar.getTime()));
        while (calendar.get(Calendar.DAY_OF_MONTH) == startDay){
            calendar.add(addedField, addedValue);
            if(!(calendar.get(Calendar.HOUR_OF_DAY) == 0 && calendar.get(Calendar.MINUTE) == 0))
                times.add(format.format(calendar.getTime()));
        }
        return times;
    }
И генерить время с любым промежутком:
Java
1
List<String> times = generateTimes(Calendar.MINUTE, 15);
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
23.07.2015, 11:13  [ТС]     Заполнение массива данных циклом с интревалом (15 минут) #9
Есть старая детская книжка c# для школьников - в ней есть такая Цитата -

Примечание редактора. Умный программист пишет не только короткий, но и понятный код. Хороший код всегда содержит комментарии умного программиста.

Как видим, код позволяет сэкономить и занимаемое пространство, и затраченные усилия. Всегда старайтесь делать код как можно более кратким – чем короче программа, тем умнее программист.

и вот Картинка - Паблито ты девочка справа ))))).
Миниатюры
Заполнение массива данных циклом с интревалом (15 минут)  
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
23.07.2015, 11:15  [ТС]     Заполнение массива данных циклом с интревалом (15 минут) #10
Valakin - полностью с тобой согласен , но в данном контексте задача - сделать красивую функцию.см 1й пост).
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
23.07.2015, 11:24     Заполнение массива данных циклом с интревалом (15 минут) #11
Цитата Сообщение от Soprano6111 Посмотреть сообщение
сделать красивую функцию
Да твоя задача то - детская, тут и ребенок справится, давай посложнее чегонить)
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
23.07.2015, 11:25  [ТС]     Заполнение массива данных циклом с интревалом (15 минут) #12
даже не знаю кому отдать лучший ответ по теме )) Spelcrawler или Rube..
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
23.07.2015, 11:28     Заполнение массива данных циклом с интревалом (15 минут) #13
Вопрос про цикл был, ответ очевиден
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
23.07.2015, 11:45  [ТС]     Заполнение массива данных циклом с интревалом (15 минут) #14
private List<String> generateTimes(int addedField, int addedValue){
Calendar calendar = Calendar.getInstance();
int startDay = 1;
calendar.set(1, 1, startDay, 0, 0, 59);
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
List<String> times = new ArrayList<>();
times.add(format.format(calendar.getTime()));
while (calendar.get(Calendar.DAY_OF_MONTH) == startDay){
calendar.add(addedField, addedValue);
if(!(calendar.get(Calendar.HOUR_OF_DAY) == 0 && calendar.get(Calendar.MINUTE) == 0))
times.add(format.format(calendar.getTime()));
}
return times;
}


У меня получилось вот так -
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
23.07.2015, 11:45  [ТС]     Заполнение массива данных циклом с интревалом (15 минут) #15
123
Миниатюры
Заполнение массива данных циклом с интревалом (15 минут)   Заполнение массива данных циклом с интревалом (15 минут)  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2015, 12:12     Заполнение массива данных циклом с интревалом (15 минут)
Еще ссылки по теме:

Android Как пройтись циклом по всем Buttons Лаяута
Android Отправка массива данных из андроид приложения на сервер по http
Android Заполнение spinner из массива
Рэндомное заполнение ArrayList Android
Android Некорректное заполнение ListView

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
23.07.2015, 12:12  [ТС]     Заполнение массива данных циклом с интревалом (15 минут) #16
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 private void initList() {
// Требуется ещё оптимизщация
        timeChekList = new ArrayList<>();
     //   for (int i = 0; i < 95; i++) {
            m = new HashMap<String, Object>();
          //  m.put(ATTRIBUTE_NAME_TEXT, "00:00" + i);
            // m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.power);
            List<String> times = generateTimes(Calendar.MINUTE, 15);
            timeChekList.add(String.valueOf(times));
      //  }
    }
    private List<String> generateTimes(int addedField, int addedValue){
        Calendar calendar = Calendar.getInstance();
        int startDay = 1;
        calendar.set(1, 1, startDay, 0, 0, 59);
        SimpleDateFormat format = new SimpleDateFormat("HH:mm");
        List<String> times = new ArrayList<>();
        times.add(format.format(calendar.getTime()));
        while (calendar.get(Calendar.DAY_OF_MONTH) == startDay){
            calendar.add(addedField, addedValue);
            if(!(calendar.get(Calendar.HOUR_OF_DAY) == 0 && calendar.get(Calendar.MINUTE) == 0))
                times.add(format.format(calendar.getTime()));
        }
        return times;
    }
Добавлено через 22 минуты
Всё всем спасибо , Руби рулит , но 2й цикл на перспективу - тоже респект , тему закрываем , Паблито - привет - всегда любит поспорить и вставить негативчик - сварливый ).
Yandex
Объявления
23.07.2015, 12:12     Заполнение массива данных циклом с интревалом (15 минут)
Ответ Создать тему
Опции темы

Текущее время: 13:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru