Mamy jeden ekran – okazało mi się, że w sumie nie ten, który mogę na teraz doprowadzić do szczęśliwego finału. Zaczęłam od strony tego co jako użytkownik chciałabym mieć i nie spojrzałam, że powinnam jednak spojrzeć od strony programisty. No bo jak ustalać obiady na kolejny tydzień skoro nie mam żadnych posiłków, z których mogłabym je wybierać.
Czas zatem naprawić ten błąd i ogarnąć ekran z posiłkami. Widzę go tak jak ten poprzedni – listView, a na nim przycisk wywołujący okienko, z formularzem do dodawania nowych. Otwieramy AndroidStudio i do dzieła. Stwórzmy sobie nowe, puste Activity.
Stworzą nam się od razu dwa pliki – jeden to klasa Javowa, drugi to xml z layoutem. Mój obiekt nazwałam MealListActivity. Teraz skoro mamy już dwa Activity (Main i MealList) trzeba im ustawić hierarchię. Zaglądamy do AndroidManifest.xml i do wygenerowanego wiersza
<activity android:name=".MealListActivity"></activity>
dorzucamy wskazanie na nadrzędną z naszych aktywności:
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
<activity | |
android:name=".MealListActivity" | |
android:parentActivityName=".MainActivity"> | |
<!– The meta-data tag is required if you support API level 15 and lower –> | |
<meta-data | |
android:name="android.support.PARENT_ACTIVITY" | |
android:value=".MainActivity" /> | |
</activity> |
Jeszcze zajdźmy do activity_meal_list.xml i wstawmy tam ListView i przycisk:
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
<Button | |
android:id="@+id/add_meal_button" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:layout_alignParentBottom="true" | |
android:layout_alignParentEnd="true" | |
android:text="@string/add" /> | |
<ListView | |
android:id="@+id/meal_list_view" | |
android:layout_width="368dp" | |
android:layout_height="495dp" | |
android:layout_below="@+id/meal_list_toolbar" | |
android:layout_marginBottom="16dp" | |
android:layout_marginLeft="16dp" | |
android:layout_marginRight="16dp" /> |
Teraz płynnie przechodzimy do tworzenia widoku:
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 class MealListActivity extends AppCompatActivity { | |
private CoNaObiadDbHelper dbHelper; | |
private String mealName = ""; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_meal_list); | |
final MealContract mealContract = new MealContract(); | |
dbHelper = new CoNaObiadDbHelper(this); | |
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mealContract.getAllMeals(dbHelper)); | |
ListView listView = (ListView) findViewById(R.id.meal_list_view); | |
listView.setAdapter(adapter); | |
} | |
} |
Jeszcze zdefiniujmy, że przycisk po kliknięciu ma nam otworzyć okienko dialogowe z miejscem na wpisanie nazwy potrawy i dwoma guzikami, jeden na dodanie do listy, drugi na zamknięcie okienka:
no i mamy to 🙂No dobra, może nie do końca – brakuje nam dwóch rzeczy -> odświeżenia listy po dodaniu nowego elementu i przejścia do tej listy :] ale DSP dalej trwa, a ja w nim 😉