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

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


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

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;

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

Skomentuj

Proszę zalogować się jedną z tych metod aby dodawać swoje komentarze:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s

Ta witryna wykorzystuje usługę Akismet aby zredukować ilość spamu. Dowiedz się w jaki sposób dane w twoich komentarzach są przetwarzane.