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

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

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

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

22.07.2015, 16:09. Просмотров 328. Ответов 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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2015, 16:09     Заполнение массива данных циклом с интревалом (15 минут)
Посмотрите здесь:
Android Заполнение spinner из массива
Android Динамическое заполнение массива картинок
Android Как пройтись циклом по всем Buttons Лаяута
Запись данных с использованием массива Android
Android Организация большого массива данных
Запускаем AlarmReceiver за 15 минут до старта Android
Android Отправка массива данных из андроид приложения на сервер по http
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
22.07.2015, 16:10  [ТС]     Заполнение массива данных циклом с интревалом (15 минут) #2
ах да ,вот скрин.
Миниатюры
Заполнение массива данных циклом с интревалом (15 минут)  
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 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
Сообщений: 729
23.07.2015, 10:07     Заполнение массива данных циклом с интревалом (15 минут) #6
фишка в том чтобы делать быстрее, если массив короткий иногда быстрее его "руками" написать
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 1
23.07.2015, 10:13     Заполнение массива данных циклом с интревалом (15 минут) #7
Цитата Сообщение от Soprano6111 Посмотреть сообщение
Ну Паблито , в том то и фишка что бы код был идеальный сделать цикл а не писать ручками как у тебя в примере
не ты ли мне в соседней теме писал?
Цитата Сообщение от Soprano6111 Посмотреть сообщение
его приём куда трудоёмкий в плане написания кода - а делается всё очень просто как я изложил выше - старая школа просто не может принять нововведений и делает всё по своему. А как известно чем проще код - тем он ценней.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 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 минут)
Еще ссылки по теме:
Заполнение массива циклом C#
Заполнение динамического массива циклом For. Delphi
JavaScript Заполнение нескольких списков циклом
VBA Заполнение ячеек в Excel циклом for
Заполнение окон редактирования одним циклом C++ Builder

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

Или воспользуйтесь поиском по форуму:
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 минут)
Ответ Создать тему
Опции темы

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