Trochę odpoczęłam już od tej aplikacji, więc mogę zacząć dodawać kolejne funkcje 🙂 Na początek coś małego – będę umożliwiać dodanie losowych obiadów tylko do dni, które nie mają jeszcze żadnego zaplanowanego posiłku.
Na początek nie chciałam utracić funkcji, która wypełnia wszystkie dni, więc zamieniłam ikonkę na rozwijalne menu:
Troszkę kodu do tego elementu z menu:
Po kliknięciu na element: „wypełnij losowo” aplikacja dorzuca po jednym daniu do każdego z kafelków. Druga akcja dorzuca obiad tylko tam gdzie jeszcze nic nie jest zaplanowane. Zrobiłam to dorzucając po prostu parametr do funkcji fillList:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private void fillList(boolean onlyEmpty) { | |
Calendar calendarInstance = Calendar.getInstance(); | |
calendarInstance.setTime(TimeUtils.getWeekStartDate(new Date())); | |
List<Meal> meals = mealContract.getRandomMeals(dbHelper, getPlanLength()); | |
for (Meal meal : meals) { | |
if (!onlyEmpty || dinnerAdapter.isDayEmpty(calendarInstance.getTime())) { | |
dinnerContract.insert(dbHelper, meal.getId(), calendarInstance.getTime()); | |
} | |
calendarInstance.add(Calendar.DATE, 1); | |
} | |
dinnerAdapter.updateResults(); | |
} |
Jak sprawdzam, czy coś zaplanowałam w danym dniu?
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public boolean isDayEmpty(Date date) { | |
return getDinners(date).size() == 0; | |
} |
I przy wywołaniu wystarczy przekazać tylko odpowiedni parametr:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
case R.id.fill_list_item: | |
fillList(false); | |
return true; | |
case R.id.fill_list_empty_item: | |
fillList(true); | |
return true; |
W ten sposób udało mi się wyeliminować jedno TODO z kodu 😀