Jak dodać Azure Mobile Service do projektu Xamarin.Android? [PORADNIK] vol.2 – Dodawanie danych do tabeli

Ostatni post dotyczył implementacji i odczytywania danych z naszego zewnętrznego serwisu.

Tym razem dodamy opcję dodawania słówek.

Otwieramy nasz projekt SlownikOnline i w Solution Explorerze przechodzimy do Resources -> layout , na którym wciskamy PPM i wybieramy Add->New Item, a następnie:

Tworzymy przykładowy widok AddWord.axml z dwoma polami edycji (każde z etykietą) i jednym przyciskiem.


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="Słówko po angielsku"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView1" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editWordPL" />
<TextView
android:text="Tłumaczenie"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView2" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editWordEN" />
<Button
android:text="Dodaj"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:id="@+id/btnAdd"
android:layout_gravity="center_horizontal" />
</LinearLayout>

Następnie tworzymy klasę odpowiadającą za działanie funkcjonalności zapisu słówek. Będzie ona dziedziczyć z DialogFragment, a także zawierać referencje do EditTextów i Button z wyglądu. Deklarujemy tutaj także metodę asynchroniczną tworzącą obiekt klasy JObject, zawierający dane rekordu do zapisu, który to obiekt jest jako zadanie przesłany do serwera metodą zadeklarowaną w WordManagerze:


public async Task SaveWordAsync(JObject word)
{
await wordsTable.InsertAsync(word);
}

Kod dla klasy AddWirdDialogFragment:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;
using Newtonsoft.Json.Linq;

namespace SlownikOnline
{
public class AddWordDialogFragment : DialogFragment
{
Button btnAdd;
EditText editWordPL;
EditText editWordEN;

WordsManager manager;
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
}

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var view = inflater.Inflate(Resource.Layout.AddWord, container, false);
btnAdd = view.FindViewById<Button>(Resource.Id.btnAdd);
editWordPL = view.FindViewById<EditText>(Resource.Id.editWordPL);
editWordEN = view.FindViewById<EditText>(Resource.Id.editWordEN);
manager = WordsManager.DefaultManager;
btnAdd.Click += OnAdd;

return view;
}

private async void OnAdd(object sender, EventArgs e)
{
var wordsToAdd = new JObject
{
{"id",Guid.NewGuid().ToString("N") },
{"WordPL", editWordPL.Text },
{"WordEN", editWordEN.Text }
};
await AddWords(wordsToAdd);
editWordEN.Text = String.Empty;
editWordPL.Text = String.Empty;
}

async Task AddWords(JObject wordsToAdd)
{
await manager.SaveWordAsync(wordsToAdd);
}
}
}

Ostatnią akcją jest dodanie funkcji uruchamiania okna dialogowego po wciśnięciu przycisku Dodaj.

Aby to zrobić przechodzimy do MainActivity i w metodzie OnCreate dodajemy:


btnAddWord.Click += ShowAddWordDialog;

co wymaga od nas utworzenia metody ShowAddWordDialog, w której ciele deklarujemy utworzenie nowego okna dialogowego:


private void ShowAddWordDialog(object sender, EventArgs e)
{
var transaction = FragmentManager.BeginTransaction();
var dialogFragment = new AddWordDialogFragment();
dialogFragment.Show(transaction, "addWordDialog");
}

Wszystko powinno działać jak należy. Pora uruchomić program w emulatorze lub na telefonie i go przetestować.

Dodajmy najpierw jakieś słówko:

a następnie je wyświetlimy:

Działa!

Jeśli przejdziemy do Easy Tables w naszej aplikacji na Azure, wybierzemy tabelę Words to możemy zobaczyć że nowe słówko zostało tutaj utworzone 🙂

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*