Установить значение для объекта внутри ArrayList, используя вложенные циклы и операторы if - PullRequest
0 голосов
/ 18 марта 2019

В следующем коде предполагается заполнить forecasted unites в Account , только если

  1. дата Report, полученная от курсора в пределах Forecast start и end даты и ,

  2. Item id = для Item идентификатора, полученного от курсора и

  3. Account id = для Account идентификатора, полученногоот курсора.

    if (cursor != null && cursor.getCount() > 0) {
        cursor.moveToFirst();
    
        do {
    
            long reportDate = cursor.getLong(cursor.getColumnIndex(ForecastsItemAccountDetailsContract.Columns.Report_Date));
            long itemId = cursor.getLong(cursor.getColumnIndex(ForecastsItemAccountDetailsContract.Columns.Item_ID));
            long accountId = cursor.getLong(cursor.getColumnIndex(ForecastsItemAccountDetailsContract.Columns.Account_ID));
            int forecastedUnits = cursor.getInt(cursor.getColumnIndex(ForecastsItemAccountDetailsContract.Columns.Forecasted_Units));
    
            for (Forecast forecast : mForecasts) {
    
                if ((forecast.getForecast_From() < reportDate) && (forecast.getForecast_To() >= reportDate)) {
    
                    for (Item item : forecast.getItems()) {
    
                        if (item.getItem_ID() == itemId) {
    
                            for (Account account : item.getAccounts()) {
    
                                if (account.getAccount_ID() == accountId) {
    
                                    account.setForecastedUnits(forecastedUnits);
                                }
                            }
                        }
                    }
                }
            }
    
        } while (cursor.moveToNext());
    }
    

Но в конце я нахожу все учетные записи во всех элементах всех прогнозов, имеющих одинаковые forecasted units.

Что может бытьошибка?

...