CoNaObiad – powrót – #29

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:

wp-1505384617958.

Troszkę kodu do tego elementu z menu:

<item
android:icon="@drawable/ic_light_bulb"
android:title="@string/fill_list"
app:showAsAction="always">
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/fill_list_item"
android:icon="@drawable/ic_light_bulb_bright"
android:title="@string/fill_list" />
<item
android:id="@+id/fill_list_empty_item"
android:icon="@drawable/ic_light_bulb"
android:title="@string/fill_only_empty_list" />
</menu>
</item>

view raw
main_menu.xml
hosted with ❤ by GitHub

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:

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();
}

view raw
MainActivity.java
hosted with ❤ by GitHub

Jak sprawdzam, czy coś zaplanowałam w danym dniu?

public boolean isDayEmpty(Date date) {
return getDinners(date).size() == 0;
}

view raw
DinnerAdapter.java
hosted with ❤ by GitHub

I przy wywołaniu wystarczy przekazać tylko odpowiedni parametr:

case R.id.fill_list_item:
fillList(false);
return true;
case R.id.fill_list_empty_item:
fillList(true);
return true;

view raw
MainActivity.java
hosted with ❤ by GitHub

W ten sposób udało mi się wyeliminować jedno TODO z kodu 😀

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

%d bloggers like this: