drugi ekran – AppCompatActivity – #0A

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.

Menu_002.png

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:

<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>

view raw
AndroidManifest.xml
hosted with ❤ by GitHub

Jeszcze zajdźmy do activity_meal_list.xml i wstawmy tam ListView i przycisk:

<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:

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:

Button button = (Button) findViewById(R.id.addMealButton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext());
builder.setTitle(R.string.putMealName);
final EditText input = new EditText(v.getContext());
input.setInputType(InputType.TYPE_CLASS_TEXT);
builder.setView(input);
builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mealName = input.getText().toString();
MealContract meal = new MealContract();
meal.insertMeal(builder.getContext(), mealName);
}
});
builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
}
});

view raw
button.java
hosted with ❤ by GitHub

no i mamy to 🙂wp-1490023866749.pngNo 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 😉

Dodaj komentarz

Twój adres email 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: