Как СБРОСИТЬ Arraylist в конце недели? - PullRequest
0 голосов
/ 30 мая 2020
  1. У меня есть массив:

    ArrayList<String> wholeWeekArrayList = new ArrayList<>();
    
  2. DatabaseHelper (SQLite) сохраняет значения в (выше) arrayList:

    Cursor data = mDatabaseHelper.getData();
    while (data.moveToNext() ) {
        wholeWeekArrayListString.add(data.getString(1));
        //getString(1) is column values from SQLite
    }
    
  3. Затем у меня есть SumofWeek, где все данные в wholeWeekArrayListString складываются. (Я конвертирую wholeWeekArrayListString в удвоение, чтобы просмотреть его в TEXTVIEW);

  4. Я хочу, чтобы этот SumOfWeek сбрасывался до нуля в конце недели, но данные внутри SQLite необходимо продолжать добавлять (для SumOfMonth просмотра).

    Таким образом, к воскресенью данные могут быть $50.00 (например) и начинаться в понедельник int. данные должны быть сброшены до 0.0 и просуммированы до воскресенья. Это должно происходить еженедельно.

Как бы вы это сделали? Я пробовал назначать дни недели.

Monday =1;
Tuesday = 2;
Wednesday =3;
// ...

и перебирать всю неделю, но я не могу получить (i), который представляет собой данные каждого дня недели, а затем сбросить его, когда is

int Sunday =7;

У меня есть общая сумма, но я не знаю, какой метод использовать для сброса данных в конце недели?

1 Ответ

0 голосов
/ 30 мая 2020

Без изменения вызовов DB вам нужно будет сохранить отметку времени последнего сброса (resetTimestamp в примере ниже). Если текущее время находится в другой неделе, код вызовет сброс sumofWeek. После этого будет ваш обычный sumofWeek logi c.

Безопасность потоков: будет добавлено в зависимости от специфики приложения.

    private ArrayList<Long> sumofWeek = new ArrayList<>(); 
    private Long resetTimestamp;

    public void populateWeek() {
        if(resetTimestamp == null || isDifferentWeek(resetTimestamp)) {
            sumofWeek = new ArrayList<Long>();
            for(int i = 0; i < 7; i++){
                sumofWeek.add(0l);
            }
            System.out.println(sumofWeek);
            resetTimestamp = java.lang.System.currentTimeMillis();
        }
        // populate sumofWeek here
    }

    private boolean isDifferentWeek(long resetTimestamp) {
        Calendar cl1 = new GregorianCalendar();
        cl1.setTimeInMillis(java.lang.System.currentTimeMillis());

        Calendar cl2 = new GregorianCalendar();
        cl2.setTimeInMillis(resetTimestamp);

        return cl1.get(Calendar.WEEK_OF_YEAR) != cl2.get(Calendar.WEEK_OF_YEAR); 
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...