Xamarin Form Ebook 2020
Xamarin Form Ebook 2020
KATA PENGANTAR
Penulis mendedikasikan buku ini kepada Komunitas Microsoft User Group Indonesia yang selalu
memberi dukungan dan dorongan kepada penulis untuk terus memiliki semangat untuk berkarya dan
berbagi.
Tidak lupa penulis juga mengucapkan terima kasih kepada Microsoft Indonesia atas dukungan dan
dedikasinya pada komunitas MUGI sehingga kami bisa selalu terus berkarya.
Buku ini ditujukan untuk pengembang yang ingin mempelajari pembuatan aplikasi mobile cross
platform (Android, IOS, dan UWP) dengan menggunakan platform Xamarin dan bahasa pemrograman
C# dan IDE Visual Studio 2019.
Untuk menghubungi penulis anda dapat mengirimkan email ke alamat erick@actual-training.com atau
ke reza.faisal@gmail.com.
Akhir kata semoga buku ini dapat bermanfaat bagi komunitas IT di Indonesia.
1
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
DAFTAR ISI
Kata Pengantar........................................................................................................................................ 1
Daftar Isi .................................................................................................................................................. 2
Bab 1 – Pengenalan Xamarin Form ......................................................................................................... 4
Apa itu Xamarin ................................................................................................................................... 4
Cara Install Xamarin Forms.................................................................................................................. 5
Memulai Membuat Project Xamarin Form ......................................................................................... 6
Menjalankan Aplikasi Android............................................................................................................. 7
Menjalankan Aplikasi Xamarin Forms pada IOS .................................................................................. 8
Menjalankan Aplikasi Xamarin Forms pada UWP/Win 10. ................................................................. 9
Bab 2 – Desain Tampilan menggunakan Layout ................................................................................... 10
Pendahuluan ..................................................................................................................................... 10
Application Lifecycle pada Xamarin Forms ....................................................................................... 10
Xamarin Forms UI (User Interface).................................................................................................... 10
Page ................................................................................................................................................... 10
View ................................................................................................................................................... 11
Layout ................................................................................................................................................ 11
Practice #2.1 Penggunaan StackLayout ......................................................................................... 11
Practice #2.2 Contoh Penggunaan Absolute Layout...................................................................... 12
Practice #2.3 Menggunakan Relative Layout ................................................................................ 12
Practice #2.4 Menggunakan GridLayout ....................................................................................... 13
Task #2.1 Menggunakan Scroll View pada Xamarin Form ............................................................. 14
Task #2.2 Kalkulator Sederhana .................................................................................................... 14
Image View ........................................................................................................................................ 15
Task #2.3 Menggunakan Image View ............................................................................................ 15
Bab 3 – Menampilkan Data Pada ListView ........................................................................................... 20
Pendahuluan ..................................................................................................................................... 20
Binding Data yang bertipe List Of String ........................................................................................... 20
Practice #3.1 Menampilkan Data bertipe List Of String ................................................................ 20
Practice #3.2 Menampilkan Data dari Objek Data Model ............................................................. 21
Practice #3.3 Menampilkan Gambar pada Cell ............................................................................. 23
Practice #3.4 Kustomisasi Baris pada ListView .............................................................................. 25
BAB 4 – Navigasi.................................................................................................................................... 27
2
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
Pendahuluan ..................................................................................................................................... 27
Jenis-jenis Navigasi pada Xamarin Forms .......................................................................................... 27
Practice #4.1 Menambahkan Navigasi Sederhana ........................................................................ 27
Practice #4.2 Membuat Dropdown Menu ..................................................................................... 28
#Practice 4.3 Menggunakan Modal Form ..................................................................................... 29
Practice #4.4 Membuat Popup Alert ............................................................................................. 30
Practice #4.5 Mengirimkan Data Antar Page ................................................................................. 32
Practice #4.6 Menggunakan objek Application.Current.Properties .............................................. 33
Practice #4.7 Menggunakan Master Page ..................................................................................... 34
#Practice 4.8 Menambahkan Tab Page ......................................................................................... 37
#Practice 4.9 Menambahkan Shell ................................................................................................ 40
#Practice 4.10 Shell Navigation ..................................................................................................... 42
#Practice 4.11 Mengirimkan Parameter Dengan Route ................................................................ 43
#Practice 4.12 Fitur Search Pada Shell .......................................................................................... 44
BAB 5 – Local Storage dengan SQLite................................................................................................ 48
Pendahuluan ..................................................................................................................................... 48
Bekerja dengan SQL Lite .................................................................................................................... 48
Practice #5.1 Membuat Aplikasi Daftar Pegawai dengan SQLite .................................................. 48
Bab 6 - Menggunakan REST Services pada Xamarin Forms .................................................................. 56
#Practice 5.2 Mengakses REST Services Menggunakan Fiddler. ................................................... 56
#Practice 5.3 Mengakses REST Services dari Xamarin Forms. ....................................................... 57
BAB 7 – Android Deployment (Membuat APK)..................................................................................... 64
Cara Membuat APK pada Xamarin Form ...................................................................................... 64
BAB 8 - Xamarin Essentials .................................................................................................................... 68
Practice 8.1 Instalasi Xamarin Essential......................................................................................... 68
Practice 8.3 Xamarin Essentials: Check Battery Status .................................................................. 70
Practice 8.4 Xamarin Essentials: Menggunakan Geolocation........................................................ 72
Practice 8.5 Xamarin Essentials: Menggunakan Geocoding .......................................................... 73
Practice 8.6 Xamarin Essentials: Menggunakan Map .................................................................... 75
3
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
Seperti namanya Xamarin for Android digunakan jika anda ingin membuat aplikasi native Android.
Sedangkan Xamarin for IOS digunakan untuk membuat aplikasi native IOS. Jika anda menggunakan
salah satu atau kedua teknologi tersebut maka anda dapat membagi komponen yang sudah anda buat
pada satu project untuk digunakan di project yang lain. Namun yang dapat dibagi hanya komponen
selain UI (User Interface). Xamarin for Android dan Xamarin for IOS masih menggukanan komponen
UI yang spesifik dengan platform.
Xamarin Forms adalah teknologi yang lebih baru, kelebihan dari Xamarin Forms adalah dapat
menggunakan satu UI yang dapat di gunakan pada platform yang berbeda. Dengan Xamarin Forms
anda cukup mengembangkan satu aplikasi dengan target platform yang berbeda. Xamarin Forms
menggunakan format XAML (eXtensible Application Markup Language) untuk membuat tampilan UI.
Arsitektur dari platform Xamarin dapat dilihat pada gambar dibawah ini:
4
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
Pada gambar diatas dapat dilihat bahwa dengan menggunakan Xamarin Forms anda tidak perlu
membuat UI yang spesifik untuk masing-masing platform Android dan IOS. UI cross-platform dapat
dibuat dengan menggunakan bahasa XAML.
Microsoft baru-baru ini sudah membuat platform Xamarin Forms menjadi platform open source, dan
anda dapat mendownload kode Xamarin Forms pada link berikut
https://github.com/xamarin/Xamarin.Forms.
Saat ini anda juga dapat menggunakan Macbook untuk pengembangan aplikasi Xamarin karena anda
dapat menginstal Visual Studio 2019 versi Mac yang juga dapat didownload secara gratis
Pada saat melakukan instalasi pilih fitur .NET Core Cross Platform Development untuk mengistall
Xamarin Forms dan ASP.NET and web development jika anda ingin membuat backend dengan
teknologi .NET (ASP.NET Web API).
5
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
Pilih tombol Create, Kemudian akan muncul jendela pilihan template sebagai berikut:
Untuk membuat project kosong, maka pilih template Blank App, kemudian untuk Platform Anda dapat
memilih Android, IOS, dan UWP (Untuk UWP anda harus menggunakan sistem operasi Windows 10
dan harus menginstal Windows SDK).
6
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
Setelah project selesai dibuat maka anda akan dapat melihat tampilan solution explorer pada Visual
Studio yang berisi 3 project.
• Project Latihan: berisi project .NET Standard yang akan dishare secara otomatis ke project
yang mempunyai platform spesifik seperti Android dan IOS. Kita akan banyak memodifikasi
kode pada project ini.
• Android: project spesifik untuk platform Android.
• IOS: project spesifik untuk platform IOS.
• UWP (Windows 10) – jika anda menggunakan sistem operasi Windows 10 dan menginstal
Windows 10 SDK.
Pilih salah satu emulator yang akan anda gunakan untuk mencoba menjalankan aplikasi Android. Klik
kanan pada project Android dan pilih set as startup project untuk menjalankan project Android.
Kemudian anda dapat memilih tipe dari emulator dan sistem operasi Android yang akan dibuat. Untuk
contoh ini digunakan emulator dengan menggunakan operating system Android Oreo (SDK 27).
Tekan CTRL+F5 untuk menjalankan program Android. Jika anda menggunakan arsitektur Intel x86 anda
membutuhkan Intel HAXM dan menonaktifkan fitur Hyper-V di Windows 10.
7
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
Setelah dijalankan maka anda dapat melihat tampilan emulator sebagai berikut:
Untuk menjalankan aplikasi IOS anda membutuhkan komputer Mac. Anda dapat menjalankan IOS
simulator lewat Visual Studio namun tetap membutuhkan komputer Mac yang diremote lewat Visual
Studio.
Untuk terkoneksi dengan komputer Mac, pilih Tools – IOS – Xamarin Mac Agent.
8
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
Untuk dapat terkoneksi dengan komputer Mac, mengkompilasi kode, dan menjalankan aplikasi pada
IOS simulator, anda harus terhubung dengan komputer Mac yang berada pada satu jaringan. Adapun
requirement yang dibutuhkan untuk diinstal pada komputer Mac adalah sebagai berikut:
Untuk menjalankan aplikasi UWP anda dapat menggunakan simulator yang sudah terinstal di Visual
Studio. Alternatif lain anda juga dapat langsung memasang aplikasi tersebut pada komputer anda
(menggunakan OS Win 10).
Dapat anda lihat bahwa tampilan aplikasi yang dijalankan sama persis dengan aplikasi yang dipasang
pada OS Android. Ini menunjukan bahwa dengan Xamarin Forms anda dapat membuat aplikasi native
yang dapat dijalankan multiplatform.
9
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
PENDAHULUAN
Bab ini akan menjelaskan salah satu komponen yang terpenting pada Xamarin Forms yaitu UI (User
Interface). Pada modul ini anda akan mempelajari bagaimana cara menggunakan objek Page, View,
dan Layout pada Xamarin Forms. Untuk membuat komponen UI di Xamarin Forms digunakan bahasa
XAML (eXtensible Application Markup Language), bagi anda pengembang .NET yang sudah pernah
menggunakan platform WPF (Windows Presentation Foundation) atau Windows Phone pasti tidak
asing dengan bahasa markup ini.
• OnStart: method ini akan dipanggil ketika aplikasi pertama kali dijalankan. Berguna untuk
mengambil nilai kedalam memory yang dibutuhkan oleh aplikasi.
• OnSleep: method ini akan dipanggil setiap kali app berpindah ke mode background. Berguna
untuk membersihan dan inisiasi backgroud calls.
• OnResume: method ini akan dipanggil ketika app masuk ke mode resume setelah
sebelumnya masuk ke mode background. Berguna untuk reload nilai kedalam memory dan
mengembalikan nilai dari backgroud threads.
Ketika pengguna memilih tombol Back atau Home pada ponsel, maka aplikasi yang sedang aktif pada
saat itu akan masuk ke mode background. Ketika pengguna memilih kembali aplikasi tersebut, maka
app tersebut di resume dan app tersebut dibawa kembali ke mode foreground. Saat ketika aplikasi
dijalankan pertama kali, saat app masuk ke mode background dan masuk ke mode foreground lagi,
sampai app tersebut ditutup (terminate).
• Page: Halaman yang digunakan untuk menampilkan view yang disusun menggunakan layout.
• Views: komponen kontrol yang ada pada Xamarin Forms seperti Entry, Button, dll.
• Layout: komponen yang digunakan untuk mengatur posisi views pada halaman.
PAGE
Class Page adalah kontainer utama untuk setiap tampilan pada halaman aplikasi di Xamarin Forms.
Class ini diturunkan dari class Xamarin.Forms.VisualElement. Class Page adalah baseclass untuk
membuat dari semua class UI pada Xamarin Forms. Berikut adalah beberapa contoh Page yang umum
digunakan:
• ContentPage
• MasterDetailPage
• NavigationPage
• TabbedPage
10
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
• CarouselPage
VIEW
View adalah kontrol interaktif yang ada pada Page. Berikut ini adalah jenis-jenis view yang ada pada
Xamarin Forms.
LAYOUT
Layout adalah wadah yang digunakan untuk pengaturan posisi kontrol (view, atau layout lain). Ada
beberapa macam layout yang didukung oleh Xamarin Form yaitu:
1. Pada project Latihan1, tambahkan forms xaml page baru baru dengan nama
SampleStackLayout.xaml. Kemudian tambahkan kode xaml berikut:
<StackLayout>
11
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
<StackLayout Spacing="0">
<Label Text="Posisi Start atau flush left" HorizontalOptions="Start"/>
<Label Text="Posisi Center" HorizontalOptions="Center"/>
<Label Text="Posisi End atau flush right" HorizontalOptions="End"/>
</StackLayout>
<StackLayout Spacing="0" Orientation="Horizontal">
<Label Text="Posisi Start" HorizontalOptions="Start"/>
<Label Text="Posisi Center" HorizontalOptions="CenterAndExpand"/>
<Label Text="Posisi End" HorizontalOptions="End"/>
</StackLayout>
</StackLayout>
2. Pada file App.xaml.cs tambahkan kode berikut untuk menjalankan halaman ini pada saat
program pertama kali dijalankan.
public App()
{
InitializeComponent();
1. Pada project Xamarin Forms, tambahkan xaml page baru dengan nama
AbsoluteLayout.xaml. kemudian tambahkan kode xaml berikut:
<AbsoluteLayout>
<Label Text="I'm centered on iPhone 4 but no other device"
AbsoluteLayout.LayoutBounds="115,150,100,100" LineBreakMode="WordWrap" />
<Label Text="I'm bottom center on every device."
AbsoluteLayout.LayoutBounds=".5,1,.5,.1" AbsoluteLayout.LayoutFlags="All"
LineBreakMode="WordWrap" />
<BoxView Color="Olive" AbsoluteLayout.LayoutBounds="1,.5, 25, 100"
AbsoluteLayout.LayoutFlags="PositionProportional" />
<BoxView Color="Red" AbsoluteLayout.LayoutBounds="0,.5,25,100"
AbsoluteLayout.LayoutFlags="PositionProportional" />
<BoxView Color="Blue" AbsoluteLayout.LayoutBounds=".5,0,100,25"
AbsoluteLayout.LayoutFlags="PositionProportional" />
</AbsoluteLayout>
2. Pada file App.xaml.cs tambahkan kode berikut untuk menjalankan halaman ini pada saat
program pertama kali dijalankan.
public App()
{
InitializeComponent();
MainPage = new AbsoluteLayout();
}
1. Pada project Xamarin Forms, tambahkan xaml page baru dengan nama RelativeLayout.xaml.
kemudian tambahkan kode xaml berikut:
12
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
<RelativeLayout>
<BoxView Color="Red" x:Name="redBox"
RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent,
Property=Height,Factor=.15,Constant=0}"
RelativeLayout.WidthConstraint="{ConstraintExpression
Type=RelativeToParent,Property=Width,Factor=1,Constant=0}"
RelativeLayout.HeightConstraint="{ConstraintExpression
Type=RelativeToParent,Property=Height,Factor=.8,Constant=0}" />
<BoxView Color="Blue"
RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToView,
ElementName=redBox,Property=Y,Factor=1,Constant=50}"
RelativeLayout.XConstraint="{ConstraintExpression Type=RelativeToView,
ElementName=redBox,Property=X,Factor=1,Constant=50}"
RelativeLayout.WidthConstraint="{ConstraintExpression
Type=RelativeToView,ElementName=redBox,
Property=Width,Factor=.5,Constant=0}"
RelativeLayout.HeightConstraint="{ConstraintExpression
Type=RelativeToView,ElementName=redBox,
Property=Height,Factor=.5,Constant=0}" />
</RelativeLayout>
2. Pada file App.xaml.cs tambahkan kode berikut untuk menjalankan halaman ini pada saat
program pertama kali dijalankan.
public App()
{
InitializeComponent();
MainPage = new RelativeLayout();
}
1. Pada project Xamarin Forms, tambahkan xaml page baru dengan nama GridLayout.xaml.
kemudian tambahkan kode xaml berikut:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Text="Top Left" Grid.Row="0" Grid.Column="0" />
<Label Text="Top Right" Grid.Row="0" Grid.Column="1" />
<Label Text="Bottom Left" Grid.Row="1" Grid.Column="0" />
<Label Text="Bottom Right" Grid.Row="1" Grid.Column="1" />
</Grid>
2. Pada file App.xaml.cs tambahkan kode berikut untuk menjalankan halaman ini pada saat
program pertama kali dijalankan.
public App()
{
InitializeComponent();
MainPage = new GridLayout();
}
13
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
<ScrollView VerticalOptions="FillAndExpand">
<StackLayout HeightRequest="1000">
<Label Text="Practice 2.1" FontSize="40" HorizontalOptions="Center"/>
<Label x:Name="lblDetail" Text="Label ini digunakan untuk menampilkan detail"
FontSize="20" HorizontalOptions="CenterAndExpand"/>
<Button x:Name="btnHello" Text="Hello Button" HorizontalOptions="Center"
VerticalOptions="Fill" />
<Entry x:Name="entryHello" Placeholder="Username" VerticalOptions="Center"
Keyboard="Text"/>
<Image x:Name="helloImg" Source="icon.png" Aspect="AspectFit"
HorizontalOptions="Center" VerticalOptions="Fill"/>
</StackLayout>
</ScrollView>
3. Kemudian pada code behind tambahkan kode berikut untuk menambahkan event pada
tombol klik.
<StackLayout Orientation="Vertical">
<Label Text="Masukan Bilangan 1 :" FontSize="Medium" />
<Entry x:Name="entryBil1" Placeholder="masukan bilangan 1" Keyboard="Numeric" />
<Label Text="Masukan Bilangan 2 :" FontSize="Medium" />
<Entry x:Name="entryBil2" Placeholder="masukan bilangan 2" Keyboard="Numeric" />
<Label Text="Hasil :" FontSize="Medium" />
<Entry x:Name="entryHasil" IsEnabled="false" />
<StackLayout Orientation="Horizontal">
<Button x:Name="btnTambah" Text="Tambah" />
<Button x:Name="btnKurang" Text="Kurang" />
<Button x:Name="btnKali" Text="Kali" />
<Button x:Name="btnBagi" Text="Bagi" />
14
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
</StackLayout>
</StackLayout>
3. Tambahkan juga kode program C# pada file KalkulatorPage.xaml.cs.
btnTambah.Clicked += Btn_Clicked;
btnKurang.Clicked += Btn_Clicked;
btnKali.Clicked += Btn_Clicked;
btnBagi.Clicked += Btn_Clicked;
}
IMAGE VIEW
Image View digunakan untuk menampilkan image. Sumber image dapat berasal dari local folder
maupun dari sumber url pada server di cloud.
15
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
VerticalOptions="Center" />
2. Pada folder Resources\drawable di android project tambahkan file monkey1.png yang akan
ditampilkan.
3. Untuk menambahkan event handler pada saat image tersebut dipilih, anda dapat
menambahkan event berikut:
16
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
1. Tambahkan page xaml dengan nama SampleFlex.xaml, kemudian tambahkan kode xaml
berikut ini:
<FlexLayout Direction="Column"
AlignItems="Center"
JustifyContent="SpaceEvenly">
2. Jalankan aplikasi dengan menekan tombol F5 untuk menampilkan output sebagai berikut:
<Grid>
<ScrollView>
<FlexLayout x:Name="flexLayout"
Wrap="Wrap"
JustifyContent="SpaceAround" />
</ScrollView>
<ActivityIndicator x:Name="activityIndicator"
IsRunning="True"
VerticalOptions="Center" />
</Grid>
17
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
3. Kemudian pada code behind tambahkan kode berikut untuk menampilkan image dari
internet.
public FlexWrapping()
{
InitializeComponent();
LoadBitmapCollection();
}
activityIndicator.IsRunning = false;
activityIndicator.IsVisible = false;
18
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
}
}
19
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
PENDAHULUAN
Modul ini akan membahas bagaimana menggunakan kontrol ListView pada Xamarin Forms. ListView
adalah salah satu kontrol yang banyak digunakan untuk menampilkan data pada layar ponsel yang
memiliki keterbatasan ukuran. Untuk menampilkan data dari sumber data kedalam view/kontrol maka
digunakan mekanisme data binding.
Mekanisme binding umum digunakan pada Xamarin Form. Binding adalah mengaitkan data yang ada
pada data source (sumber data) ke kontrol tertentu. Ada dua macam jenis binding yaitu one-way
binding dan two-way binding. One-way binding digunakan hanya untuk menampilkan data saja,
sedangkan two-way binding digunakan untuk menampilkan dan mengedit data.
public BindingListString()
{
InitializeComponent();
List<string> items = new List<string> { "First", "Second", "Third" };
listView.ItemsSource = items;
}
4. Anda juga dapat mengambil informasi data/item yang dipilih pada ListView, caranya adalah
dengan menambahkan event handler ‘ItemTapped’ kedalam ListView.
public BindingListString()
{
InitializeComponent();
List<string> items = new List<string> { "First", "Second", "Third" };
listView.ItemsSource = items;
5. Setelah itu masuk ke halaman App.xaml.cs dan ubah kode program berikut di bagian
constructor seperti berikut :
20
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
public App()
{
InitializeComponent();
MainPage = new Modul3.BindingListString();
}
1. Pada project Xamarin Forms, tambahkan folder baru dengan nama Models, kemudian
tambahkan class dengan nama ListItem.cs.
4. Pada halaman xaml diatas digunakan ItemTemplate untuk mengatur data yang akan
ditampilkan pada kontrol ListView. Keyword Binding digunakan untuk mengikatkan data
yang diambil dari objek data model kedalam kontrol ListView.
5. Element TextCell digunakan untuk menampilkan dua informasi yaitu title dan description.
6. Pada file BindingToDataModel.xaml.cs tambahkan kode berikut ini.
21
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
{
InitializeComponent();
BindingContext = new ListViewDataModelViewModel();
}
public App()
{
InitializeComponent();
MainPage = new Bab3.BindingToDataModel();
}
22
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
1. Pada project Xamarin Forms, tambahkan halaman xaml baru dengan nama
ListViewImageCell.xaml.
2. Kemudian tambahkan kode xaml berikut ini:
23
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
{
get { return listItems; }
set
{
listItems = value;
OnPropertyChanged("ListItems");
}
}
public ListViewImageCellViewModel()
{
listItems = new List<ListItem>
{
new ListItem { Source="first.png", Title="Mystic",
Description="Mystic team blue badge" },
new ListItem { Source="second.png",
Title="Instinct",Description="Instinct team yellow badge" },
new ListItem { Source="third.png",
Title="Valor",Description="Valor team red badge" }
};
}
}
}
6. Tambahkan juga class dengan nama ListViewImageCellViewModel.cs. Class ini berisi objek-
objek yang akan ditampilkan pada kontrol ListView.
7. Kode diatas mirip dengan contoh sebelumnya, hanya ada tambahan inisialisasi satu property
baru yaitu Source yang berisi nama file image yang akan ditampilkan.
8. Untuk menambahkan image yang akan ditampilkan, tambahkan image yang akan
ditampilkan kedalam project Android Navtive (untuk aplikasi android) di folder
Resources\drawable. Pada contoh berikut ditambahkan tiga file bertipe .png kedalam folder
tersebut. Anda dapat download asset tersebut pada file contoh di github.
9. Kemudian tekan tombol F5 untuk menjalankan program pada emulator, hasil dari aplikasi
yang sudah dibuat dapat dilihat pada kode berikut ini. Jangan lupa untuk mengganti
inisalisasi page yang diload oleh aplikasi pada App.xaml.cs
24
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
1. Pada project Xamarin Forms, tambahkan halaman xaml baru dengan nama
ListViewCustom.xaml. Kemudian tambahkan xaml berikut ini.
25
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
{
get { return listItems; }
set
{
listItems = value;
OnPropertyChanged("ListItems");
}
}
public ListViewCustomViewModel()
{
listItems = new List<ListItem>
{
new ListItem { Title="Pokeball", Description="Pokeball Red",
Price="Rp.10.000" },
new ListItem {Title="Masterball",Description="Masterball
Blue",Price="Rp.20.000" },
new ListItem {Title="Ultraball",Description="Ultraball
Yellow",Price="Rp.50.000" }
};
}
}
5. Untuk menjalankan program tekan tombol F5, maka anda akan dapat melihat hasilnya pada
android emulator. Jangan lupa untuk mengganti inisalisasi page yang diload oleh aplikasi
pada App.xaml.cs
26
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
BAB 4 – NAVIGASI
PENDAHULUAN
Pada bab ini akan dibahas bagaimana cara membuat navigasi antar halaman pada aplikasi Xamarin
Forms. Navigasi digunakan untuk memudahkan pengguna untuk berpindah antar halaman. Selain itu
pada modul ini juga akan dibahas bagaimana cara untuk mengirimkan parameter antar halaman dan
membuat berbagai macam model navigasi seperti menu, tabs, dan master pages.
• Hierarchical
• Modal
• Tabs
• Master Pages
1. Pada project Xamarin Forms tambahkan halaman xaml baru dengan nama
NavigationPage1.xaml. Kemudian tambahkan kode xaml berikut.
<StackLayout>
<Label Text="Home Page" FontSize="40"></Label>
<Button Text="Go To Second Page" x:Name="btnSecond"></Button>
</StackLayout>
2. Pada kode xaml diatas terdiri dari dua kontrol yaitu label dan button. Jika tombol ditekan
maka diharapkan halaman 2 akan ditampilkan.
3. Untuk mengaktifkan mekanisme navigasi pada halaman, tambahkan objek NavigationPage
pada file App.xam.cs.
public App()
{
InitializeComponent();
MainPage = new NavigationPage(new NavigationPage1());
}
4. Pada kode diatas dapat dilihat bahwa ketika memanggil halaman NavigationPage1 untuk
pertama kali, maka objek NavigationPage juga harus dibuat agar fitur navigasi dapat
digunakan.
5. Pada file NavigationPage1.xaml.cs tambahkan kode berikut:
27
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
{
await Navigation.PushAsync(new NavigationPage2());
}
}
6. Method Navigation.PushAsync() diatas digunakan untuk memanggil halaman selanjutnya
yaitu halaman NavigationPage2.
7. Pada project portable, tambahkan halaman xaml dengan nama NavigationPage2.xaml.
Kemudian tambahkan kode berikut:
<StackLayout>
<Label Text="Second Page" FontSize="40"></Label>
<Button x:Name="btnBack" Text="Back"/>
</StackLayout>
8. Kemudian tambahkan kode pada NavigationPage2.xaml.cs. Method Navigation.PopAsync()
digunakan untuk kembali ke halaman sebelumnya.
1. Pada project Xamarin Forms, tambahkan halaman xaml dengan nama DropdownMenu.xaml.
kemudian tambahkan kode xaml berikut ini:
2. Pada kode xaml diatas dapat dilihat penambahan ToolbarItems untuk membuat menu
dropdown.
28
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
Dengan menggunakan modal form anda dapat menampilkan halaman full-screen. Ketika modal form
ditampilkan, maka navigation bar tidak akan ditampilkan sampai form modal tersebut ditutup.
1. Pada project portable tambahkan halaman xaml baru dengan nama ModalPage.xaml.
Kemudian tambahkan kode berikut:
2. Buat juga halaman xaml dengan nama ModalSecondPage.xaml, kemudian tambahkan kode
berikut:
29
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<ContentPage.Content>
<StackLayout>
<Label Text="Second Page" FontSize="40" />
<Button Text="Pop back to First Page" Clicked="Navigate" />
</StackLayout>
</ContentPage.Content>
</ContentPage>
3. Untuk menampilkan Modal Form yang sudah dibuat pada langkah sebelumnya, tambahkan
kode berikut pada file ModalPage.xaml.cs.
6. Tekan tombol F5 untuk menjalankan program pada Android Emulator. Tampilan pemanggilan
modal form dapat dilihat pada gambar berikut ini. Jangan lupa untuk mengganti inisalisasi
page yang diload oleh aplikasi pada App.xaml.cs.
1. Pada project Xamarin Forms tambahkan halaman xaml dengan nama PopupMainPage.xaml.
kemudian tambahkan kode xaml berikut ini.
30
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
xmlns:local="clr-namespace:Modul4;assembly=Modul4"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<TabbedPage.Children>
<local:AlertPage Title="Alerts" Icon="icon.png" />
<local:ActionSheetPage Title="ActionSheets" Icon="icon.png" />
</TabbedPage.Children>
</TabbedPage>
4. Pada file AlertPage.xaml.cs tambahkan kode berikut ini untuk menampilkan popup display
alert.
31
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<ContentPage.Content>
<StackLayout Padding="0,20,0,0">
<Label Text="DisplayActionSheet" FontSize="Large" HorizontalOptions="Center" />
<Button Text="ActionSheet Simple" Clicked="OnActionSheetSimpleClicked" />
<Button Text="ActionSheet Cancel/Delete"
Clicked="OnActionSheetCancelDeleteClicked" />
</StackLayout>
</ContentPage.Content>
</ContentPage>
11. Untuk mengaktifkan mekanisme navigasi pada halaman, tambahkan objek PopupMainPage
pada file App.xam.cs.
Ada beberapa cara yang dapat digunakan untuk mengirimkan data antar halaman. Cara yang pertama
dan yang paling mudah adalah mengimkan data melalui objek konstruktor.
1. Pada project Xamarin Forms, tambahkan attribut name pada halaman NavigationPage2.xaml
yg sebelumnya sudah dibuat. Sehingga tampilannya berikut ini.
32
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
</StackLayout>
</ContentPage.Content>
</ContentPage>
3. Dapat dilihat pada kode diatas bahwa pada konstruktor NavigationPage2 ditambahkan satu
parameter yaitu param yang bertipe string. Kemudian nilai dari parameter tersebut akan
ditampilkan pada kontrol lblParam.
4. Untuk mengirimkan data pada saat objek NavigationPage2 dibuat, tambahkan kode berikut
pada NavigationPage1.xaml.cs.
5. Tekan tombol F5 untuk menjalankan program pada Android Emulator. Jangan lupa untuk
mengganti inisalisasi page yang diload oleh aplikasi pada App.xaml.cs.
public App()
{
InitializeComponent();
Application.Current.Properties["id"] = "22002321";
MainPage = new NavigationPage(new NavigationPage1());
}
33
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
2. Kemudian untuk mengambil nilai dari objek tersebut pada halaman NavigationPage2,
tambahkan kode berikut:
3. Tekan tombol F5 untuk menjalankan program pada Android Emulator. Tampilan dapat dilihat
pada gambar berikut ini. Jangan lupa untuk mengganti inisalisasi page yang diload oleh aplikasi
pada App.xaml.cs
1. Pada project portable, tambahkan kode xaml berikut pada halaman MainPage.xaml.
<MasterDetailPage>
<MasterDetailPage.Master>
<local:MasterPage x:Name="masterPage" />
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<NavigationPage>
<x:Arguments>
<local:ContactsPage />
</x:Arguments>
</NavigationPage>
</MasterDetailPage.Detail>
</MasterDetailPage>
2. Langkah pertama yang harus dilakukan adalah dengan membuat container yang akan diisi
dengan halaman master dan halaman navigasi.
3. Pada project portable Modul4, tambahkan class dengan nama MasterPageItem.cs. Class ini
berisi data dari menu yang akan ditampilkan pada MasterPageItem.
34
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
5. Kemudian tambahkan halaman xaml dengan nama MasterPage.xaml. Halaman ini akan berisi
daftar menu yang akan ditampilkan.
6. Pada halaman master page ditambahkan kontrol ListView untuk menampilkan menu.
Kemudian pada MasterPage.xaml.cs tambahkan kode berikut:
public MasterPage()
{
InitializeComponent();
35
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
Title = "Contacts",
IconSource = "contacts.png",
TargetType = typeof(ContactsPage)
});
masterPageItems.Add (new MasterPageItem {
Title = "TodoList",
IconSource = "todo.png",
TargetType = typeof(TodoListPage)
});
masterPageItems.Add (new MasterPageItem {
Title = "Reminders",
IconSource = "reminders.png",
TargetType = typeof(ReminderPage)
});
listView.ItemsSource = masterPageItems;
}
}
4. Jika Terdapat tanda merah pada ContactsPage, TodoListPage dan ReminderPage abaikan.
Karena halaman tersebut belum dibuat. Selanjutnya akan membuat classhalaman tersebut
7. Untuk menampilkan halaman di bagian detail tambahkan halaman xaml dengan nama
ContactsPage.xaml.
36
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
10. Pada file App.xaml.cs tambahkan kode berikut untuk menjalankan halaman MainPage ketika
aplikasi dijalankan untuk pertama kali.
public App ()
{
MainPage = new Modul4.MainPage();
}
1. Pada project portable tambahkan halaman xaml baru dengan nama TabbedPageDemo.xaml.
Kemudian tambahkan kode xaml berikut:
37
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
<StackLayout Orientation="Horizontal"
IsVisible="{Binding Tribe,
Converter={StaticResource booleanConverter}}">
<Label Text="Tribe:"
HorizontalOptions="FillAndExpand" />
<Label Text="{Binding Tribe}"
Font="Bold,Medium" />
</StackLayout>
<StackLayout Orientation="Horizontal">
<Label Text="Genus:"
HorizontalOptions="FillAndExpand" />
<Label Text="{Binding Genus}"
Font="Bold,Medium" />
</StackLayout>
</StackLayout>
</StackLayout>
</ContentPage>
</DataTemplate>
</TabbedPage.ItemTemplate>
</TabbedPage>
2. Pada elemen TabbedPage dapat ditambahkan template yang berisi layout dari Tab halaman
yang akan dibuat.
3. Untuk menambahkan icon berupa file .png, anda dapat menaruh icon tersebut kedalam
project Droid pada folder Resources\drawable seperti yang sudah ditunjukan pada modul
sebelumnya.
4. Kemudian tambahkan kode berikut pada file App.cs untuk menjalankan halaman
TabbedPageDemo ketika aplikasi dijalankan untuk pertama kali.
public App()
{
MainPage = new TabbedPageDemo();
}
5. Buat class baru dengan nama MonkeyDataModel.cs. Class ini akan digunakan sebagai sumber
data yang ditampilkan pada kontrol Tab.
static MonkeyDataModel ()
{
All = new ObservableCollection<MonkeyDataModel> {
new MonkeyDataModel {
Name = "Chimpanzee",
Family = "Hominidae",
Subfamily = "Homininae",
Tribe = "Panini",
Genus = "Pan",
38
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
PhotoUrl =
"http://upload.wikimedia.org/wikipedia/commons/thumb/6/62/Schimpanse_Zoo_Leipzig.j
pg/640px-Schimpanse_Zoo_Leipzig.jpg"
},
new MonkeyDataModel {
Name = "Orangutan",
Family = "Hominidae",
Subfamily = "Ponginae",
Genus = "Pongo",
PhotoUrl =
"http://upload.wikimedia.org/wikipedia/commons/b/be/Orang_Utan%2C_Semenggok_Forest
_Reserve%2C_Sarawak%2C_Borneo%2C_Malaysia.JPG"
},
new MonkeyDataModel {
Name = "Tamarin",
Family = "Callitrichidae",
Genus = "Saguinus",
PhotoUrl =
"http://upload.wikimedia.org/wikipedia/commons/thumb/8/85/Tamarin_portrait_2_edit3
.jpg/640px-Tamarin_portrait_2_edit3.jpg"
}
};
}
}
public TabbedPageDemo()
{
InitializeComponent ();
ItemsSource = MonkeyDataModel.All;
}
39
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
Pada tutorial ini anda akan melihat betapa mudahnya memasang fitur shell pada aplikasi Xamarin.
Bentuk Shell dengan berbagai jenis skema navigasi dan cara menavigasi ke sub-halaman.
1. Untuk membuat shell dari awal, anda dapat membuat project baru kemudian pilih template
untuk membuat shell seperti gambar dibawah ini.
2. Namun jika anda sudah memiliki project Xamarin Forms, maka anda dapat menambahkan
Shell dengan cara menambahkan halaman xaml yang diturunkan dari class Shell.
3. Pada Xamarin Forms project tambahkan xaml baru dengan nama AppShell.xaml
<Shell xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Latihan1.AppShell">
</Shell>
5. Kemudian pada App class tambahkan kode berikut ini untuk membuka shell pertama kali.
public App()
{
InitializeComponent();
MainPage = new AppShell();
}
40
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
6. Untuk menambahkan menu anda dapat menggunakan FlyoutItem atau menggunakan TabBar.
7. Untuk menampilkan menu yang dapat di slide di sebelah kiri, anda dapat menggunakan flyout
item. Kodenya adalah sebagai berikut:
<Shell ---------
xmlns:views="clr-namespace:Latihan1.Bab3">
<FlyoutItem Title="List Sample"
FlyoutDisplayOptions="AsMultipleItems">
41
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
<views:ListViewCustom />
</ShellContent>
</FlyoutItem>
1. Pada aplikasi yang sudah kita buat sebelumnya, tambahkan code behind sebagai berikut:
public AppShell()
{
InitializeComponent();
Routing.RegisterRoute("liststring", typeof(BindingListString));
Routing.RegisterRoute("imagecell", typeof(ListViewImageCell));
Routing.RegisterRoute("datamodel", typeof(BindingToDataModel));
Routing.RegisterRoute("customlist", typeof(ListViewCustom));
}
42
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
<views:ListViewCustom />
</ShellContent>
</FlyoutItem>
3. Pada halaman BindingListString yang sudah dibuat sebelumnya tambahkan tmbol untuk
navigasi halaman.
<StackLayout>
<Button x:Name="btnImageCell"
Text="Ke Halaman Image Cell" Clicked="btnImageCell_Clicked" />
<ListView x:Name="listView" />
</StackLayout>
4. Untuk navigasi dengan menggunakan route yang sudah dibuat, anda dapat menambahkan
perintah berikut ini:
<StackLayout>
<Button x:Name="btnImageCell"
Text="Ke Halaman Image Cell" Clicked="btnImageCell_Clicked" />
<ListView x:Name="listView" />
</StackLayout>
43
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
[QueryProperty("Nama","nama")]
public partial class ListViewImageCell : ContentPage
static MonkeyData()
{
Monkeys = new List<Animal>();
Monkeys.Add(new Animal
{
Name = "Baboon",
Location = "Africa & Asia",
Details = "Baboons are African and Arabian Old World monkeys
belonging to the genus Papio, part of the subfamily Cercopithecinae.",
ImageUrl =
"https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Papio_anubis_%28Serenge
ti%2C_2009%29.jpg/200px-Papio_anubis_%28Serengeti%2C_2009%29.jpg"
});
Monkeys.Add(new Animal
{
Name = "Capuchin Monkey",
Location = "Central & South America",
Details = "The capuchin monkeys are New World monkeys of the
subfamily Cebinae. Prior to 2011, the subfamily contained only a single genus,
Cebus.",
44
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
ImageUrl = "
https://upload.wikimedia.org/wikipedia/commons/thumb/4/40/Capuchin_Costa_Rica.jpg/
200px-Capuchin_Costa_Rica.jpg"
});
}}
4. Kemudian tambahkan juga folder Controls, kemudian tambahkan file dengan nama
MonkeySearchHandler.cs. file ini digunakan untuk menangani mekanisme search.
if (string.IsNullOrWhiteSpace(newValue))
{
ItemsSource = null;
}
else
{
ItemsSource = MonkeyData.Monkeys
.Where(monkey =>
monkey.Name.ToLower().Contains(newValue.ToLower()))
.ToList<Animal>();
}
}
45
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
7. Karena ketika kita memilih salah satu item akan dibuka halaman details, maka tambahkan
halaman baru dengan nama DetailSearch.xaml
[QueryProperty("MonkeyName", "name")]
public class MonkeyDetailViewModel : INotifyPropertyChanged
{
public string MonkeyName
{
set
{
Animal monkey = MonkeyData.Monkeys.FirstOrDefault(m => m.Name ==
Uri.UnescapeDataString(value));
if (monkey != null)
{
Name = monkey.Name;
Location = monkey.Location;
Details = monkey.Details;
ImageUrl = monkey.ImageUrl;
OnPropertyChanged("Name");
OnPropertyChanged("Location");
46
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
OnPropertyChanged("Details");
OnPropertyChanged("ImageUrl");
}
}
}
#region INotifyPropertyChanged
#endregion
}
Routing.RegisterRoute("monkeylist", typeof(ContohSearch));
Routing.RegisterRoute("monkeydetails", typeof(DetailSearch));
10. Kemudian jalankan aplikasinya, dan pilih menu navigasi Monkey List.
11. Ketikan keyword yang diinginkan, setelah dipilih maka akan ditampilkan halaman detail.
47
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
PENDAHULUAN
Pada modul ini akan dibahas bagaimana bekerja dengan media penyimpanan lokal berupa database
yaitu SQL Lite untuk menyimpan persistance data pada perangkat Android. Modul ini juga akan
membahas bagaimana cara untuk bekerja dengan REST Services pada aplikasi backend.
5. Pada project portable tambahkan class dengan nama Employee.cs yang akan digunakan untuk
menyimpan data pegawai pada database SQLite.
using SQLite.Net.Attributes;
using System;
48
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
namespace SampleSQLite
{
public class Employee
{
[PrimaryKey, AutoIncrement]
public long EmpId { get; set; }
[NotNull]
public string EmpName { get; set; }
public string Designation { get; set; }
public string Department { get; set; }
public string Qualification { get; set; }
}
}
6. Keyword PrimaryKey menandakan bahwa field EmpId adalah primary key. Autoincrement
menunjukan bahwa kode EmpId akan digenerate otomatis oleh SQLite secara berurutan.
7. Pada project .NET Standard tambahkan juga class dengan nama DataAccess.cs. Kemudian
tambahkan kode berikut:
using Plugin.NetStandardStorage.Abstractions.Interfaces;
using Plugin.NetStandardStorage.Implementations;
using SQLite;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace SampleSQLite
{
public class DataAccess
{
SQLiteConnection database;
public DataAccess()
{
database = GetConnection();
database.CreateTable<Employee>();
}
49
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
8. Kode diatas adalah kode yang digunakan untuk membuat table baru dan perintah untuk CRUD
(Create, Read, Update, Delete).
9. Pada project .NET Standard tambahkan juga kode berikut pada file App.xaml.cs. Kode dibawah
ini bertujuan untuk membuat instance class static yang dapat diakses dari semua form tanpa
harus membuat instance class-nya.
public App()
{
InitializeComponent();
MainPage = new NavigationPage(new ManageEmployee());
}
}
10. Class App adalah class yang akan dijalankan untuk pertama kali ketika aplikasi tersebut
dijalankan.
11. Untuk menampilkan data pegawai, buat halaman xaml baru dengan nama
ManageEmployee.xaml. Kemudian tambahkan kode berikut.
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SampleSQLite.ManageEmployee" Title="Manage Employee">
<ContentPage.Content>
<StackLayout>
<ListView x:Name="lstEmployee" HasUnevenRows="False"
ItemSelected="LstEmployee_ItemSelected"
Header="Header Value" Footer="Footer">
<ListView.HeaderTemplate>
<DataTemplate>
50
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
<StackLayout Orientation="Horizontal"
BackgroundColor="Blue" Padding="5,5,5,5">
<Label Text="Name" FontSize="Medium"
FontAttributes="Bold" TextColor="White"/>
<Label Text="Designation" FontSize="Medium"
FontAttributes="Bold" TextColor="White"/>
<Label Text="Department" FontSize="Medium"
FontAttributes="Bold" TextColor="White"/>
</StackLayout>
</DataTemplate>
</ListView.HeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal"
Padding="5,5,5,5">
<Label Text="{Binding EmpName}" FontSize="Medium" />
<Label Text="{Binding Department}" FontSize="Medium" />
<Label Text="{Binding Qualification}"
FontSize="Medium"/>
<Button Text="delete" HeightRequest="15"
CommandParameter="{Binding EmpId}" Clicked="btnDeleteClick" FontSize="Micro" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.FooterTemplate>
<DataTemplate>
<StackLayout Orientation="Horizontal" Padding="5,5,5,5">
<Button Text="Add New Employee" Clicked="OnNewClicked" />
</StackLayout>
</DataTemplate>
</ListView.FooterTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
</ContentPage>
12. Pada kode xaml diatas ditambahkan sebuah kontrol ListView untuk menampilkan data yang
akan diambil dari media penyimpanan lokal SQLIte.
13. Pada file ManageEmployee.xaml.cs tambahkan kode berikut.
namespace SampleSQLite
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ManageEmployee : ContentPage
{
public ManageEmployee()
{
InitializeComponent();
}
51
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
{
return;
}
var empDetail = (Employee)e.SelectedItem;
await Navigation.PushAsync(new ShowEmployee(empDetail));
}
}
}
14. Kode diatas digunakan untuk menampilkan data pegawai yang diambil dari media
penyimpanan lokal dan juga menangani event untuk memilih data yang ada pada kontrol
ListView untuk ditampilkan detailnya.
15. Kode diatas juga menangani proses delete data ketika tombol delete yang ada di dalam
ListView dipilih.
16. Untuk menangani penambahan data pegawai baru, buat halaman xaml baru dengan nama
AddEmployee.xaml. Kemudian tambahkan kode xaml berikut ini:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SampleSQLite.AddEmployee" Title="Add Employee">
<ContentPage.Content>
<StackLayout>
<TableView Intent="Settings" BackgroundColor="White">
<TableRoot>
<TableSection Title="Add New Employee">
<EntryCell x:Name="txtEmpName" Label="Employee Name"
Keyboard="Text" />
<EntryCell x:Name="txtDesign" Label="Designation"
Keyboard="Text" />
<EntryCell x:Name="txtDepartment" Label="Department"
Keyboard="Text" />
<EntryCell x:Name="txtQualification" Label="Qualification"
Keyboard="Text" />
<ViewCell>
<ContentView Padding="0,0">
<ContentView.Content>
52
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
namespace SampleSQLite
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class AddEmployee : ContentPage
{
public AddEmployee ()
{
InitializeComponent ();
}
18. Untuk menampilkan halaman detail pegawai per record, tambahkan halaman xaml dengan
nama ShowEmployee.xaml. Halaman ini juga memiliki tombol edit record.
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SampleSQLite.ShowEmployee" Title="Show Employee">
<ContentPage.Content>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="50"/>
<RowDefinition Height="50"/>
<RowDefinition Height="50"/>
<RowDefinition Height="50"/>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
53
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
<ColumnDefinition Width="10"/>
</Grid.ColumnDefinitions>
namespace SampleSQLite
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ShowEmployee : ContentPage
{
private Employee currEmp;
public ShowEmployee(Employee employee)
{
InitializeComponent();
currEmp = employee;
BindingContext = currEmp;
}
54
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
55
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
http://actservices.azurewebsites.net/api/TodoItem/
Untuk pengecekan apakah Web Services tersebut dapat berjalan, anda dapat menggunakan tool
Fiddler. Anda dapat mengunduh tools fiddler secara gratis pada tautan berikut ini:
https://www.telerik.com/download/fiddler.
3. Pada jendela bagian kiri akan ditampilkan hasil-nya. Status yang tertera adalah 200 OK yang
menunjukan bahwa request ke server berhasil.
4. Data JSON yang dikembalikan dapat dilihat pada gambar dibawah ini.
56
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
3. Pada project .NET Standard, tambahkan class dengan nama TodoItem.cs. Class ini akan
digunakan untuk membuat objek yang dapat menampung data dari REST Services. Tambahkan
kode c# berikut:
namespace TodoREST
{
public class TodoItem
{
public string ID { get; set; }
57
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
4. Pada project .NET Standard, tambahkan juga class dengan nama Constants.cs untuk
menyimpan alamat url dari REST Services.
5. Pada project .NET Standard, tambahkan foder dengan nama Data. Kemudian pada folder
tersebut tambahkan interface baru dengan nama IRestService.cs. Interface ini berisi method-
method yang akan digunakan untuk menampilkan, menambahkan, mengedit, dan mendelete
data.
using System.Threading.Tasks;
using TodoREST.Models;
namespace TodoREST.Data
{
public interface IRestService
{
Task<List<TodoItem>> RefreshDataAsync();
Task SaveTodoItemAsync(TodoItem item, bool isNewItem);
Task DeleteTodoItemAsync(string id);
}
}
6. Pada folder Data, tambahkan class dengan nama RestServices.cs. Class ini digunakan untuk
mengakses REST Services menggunakan class HttpClient dan menampung datanya kedalam
objek koleksi yang sudah disediakan.
namespace TodoREST.Data
{
public class RestServices : IRestServices
{
private HttpClient client;
public List<TodoItem> Items { get; private set; }
public RestServices()
{
client = new HttpClient();
}
58
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
}
catch (Exception ex)
{
Debug.WriteLine(@"Kesalahan {0}", ex.Message);
}
}
}
catch (Exception ex)
{
Debug.WriteLine("Error: " + ex.Message);
}
return Items;
}
try
{
var json = JsonConvert.SerializeObject(item);
var content = new StringContent(json, Encoding.UTF8,
"application/json");
HttpResponseMessage response = null;
if (isNewItem)
{
response = await client.PostAsync(uriPost, content);
}
else
{
response = await client.PutAsync(uriPut, content);
}
if (response.IsSuccessStatusCode)
{
Debug.WriteLine(@"TodoItem berhasil disimpan.");
}
}
catch (Exception ex)
{
Debug.WriteLine(@"Kesalahan {0}", ex.Message);
59
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
}
}
}
}
7. Class diatas berisi method-method untuk mengakses REST Services yang digunakan untuk
menampilkan, menambah, mengedit, dan mendelete data.
8. Untuk mengakses class RestServices dengan lebih mudah maka buat kode berikut pada class
App.xaml.cs.
namespace TodoREST
{
public partial class App : Application
{
private static IRestServices empServices;
public static IRestServices EmpServices
{
get
{
if (empServices == null)
{
empServices = new RestServices();
}
return empServices;
}
}
public App()
{----}
}
}
9. Langkah selanjutnya adalah menampilkan data yang sudah diambil dari REST Services. Untuk
itu pada project .NET Standard tambahkan halaman xaml dengan nama TodoListPage.xaml.
Halaman ini digunakan untuk menampilkan informasi todolist pada kontrol ListView.
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TodoREST.TodoListPage" Title="TodoList Page">
<ContentPage.ToolbarItems>
<ToolbarItem Text="+" Clicked="OnAddItemClicked">>
<ToolbarItem.Icon>
<OnPlatform x:TypeArguments="FileImageSource" Android="plus.png" />
</ToolbarItem.Icon>
</ToolbarItem>
</ContentPage.ToolbarItems>
<ContentPage.Content>
<ListView x:Name="listView" ItemSelected="OnItemSelected"
IsPullToRefreshEnabled="True" Refreshing="ListView_Refreshing" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Padding="20,0,0,0"
HorizontalOptions="StartAndExpand" Orientation="Horizontal">
<Label Text="{Binding Name}"
VerticalTextAlignment="Center" />
<Image Source="check.png" IsVisible="{Binding Done}" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
60
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
</ListView>
</ContentPage.Content>
</ContentPage>
10. Tambahkan gambar plus.png dan icon.png pada project Android (folder Resources\drawable).
Dengan klik kanan pada drawable > Add > Existing Item... > kemudian cari gambar icon
11. Kemudian tambahkan kode berikut pada file TodoListPage.xaml.cs.
namespace TodoREST
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class TodoListPage : ContentPage
{
public TodoListPage()
{
InitializeComponent();
}
12. Kode diatas berisi method yang digunakan untuk menampilkan data todo list kedalam kontrol
ListView, dan menambahkan event ketika list tersebut dipilih.
13. Tambahkan halaman xaml baru dengan nama TodoItemPage.xaml. Halaman ini digunakan
untuk menampilkan detail todo, mengedit, dan mendelete data.
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TodoREST.TodoItemPage" Title="Detail Todo">
61
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
<ContentPage.Content>
<StackLayout VerticalOptions="StartAndExpand">
<Label Text="Name" />
<Entry x:Name="nameEntry" Text="{Binding Name}" Placeholder="task
name" />
<Label Text="Notes" />
<Entry x:Name="notesEntry" Text="{Binding Notes}" />
<Label Text="Done" />
<Switch x:Name="doneSwitch" IsToggled="{Binding Done}" />
<Button Text="Save" Clicked="OnSaveActivated" />
<Button Text="Delete" Clicked="OnDeleteActivated" />
<Button Text="Cancel" Clicked="OnCancelActivated" />
</StackLayout>
</ContentPage.Content>
</ContentPage>
namespace TodoREST
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class TodoItemPage : ContentPage
{
bool isNewItem;
public TodoItemPage(bool isNew = false)
{
InitializeComponent();
isNewItem = isNew;
}
}
}
15. Tekan tombol CTRL+F5 untuk menjalankan kode tersebut pada emulator.
62
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
63
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
2. Setelah langkah ini dikerjakan maka Visual Studio akan menyiapkan semua file yang nanti
akan dikompilasi menjadi file .apk.
64
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
3. Setelah selesai pilih tombol Distribute untuk mendistribusikan .apk yang akan dibuat. Ada
dua pilihan yaitu Ad Hoc dan Google Play. Pilih Ad Hoc untuk mendistribusikan .apk tanpa
melalui google play.
4. Anda akan diminta untuk membuat sertifikat Android Keystore, masukan data yang
dibutuhkan seperti gambar dibawah ini, kemudian tekan tombol Create.
5. Setelah proses signing identity pada aplikasi yang kita buat, pilih tombol Save As.
65
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
7. Anda akan diminta untuk memasukan password yang sebelumnya sudah anda buat ketika
membuat Android Keystore.
66
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
8. Anda dapat melihat bahwa kita sudah berhasil membuat file .apk yang siap untuk
didistribusikan.
67
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
Xamarin Essentials menyediakan satu API yang dapatbekerja dengan IOS, Android, dan aplikasi UWP
yang dapat diakses dari satu share code. Xamarin Essentials menyediakan banyak feature yang dapat
digunakan seperti:
3. Kemudian cari Xamarin Essentials. Jika anda menggunakan Visual Studio 2019, maka Xamarin
Essentials sudah terpasang secara default ketika anda membuat project baru.
68
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
1. Dengan menggunakan API ini anda dapat mengetahui informasi dari aplikasi.
2. Anda dapat mengambil informasi yang ada oada AndroidManifest.xml seperti:
• Build – android:versionCode in manifest node
• Name - android:label in the application node
• PackageName: package in the manifest node
• VersionString – android:versionName in the application node
3. Pada project SampleXamarinEssentials tambahkan halaman xaml baru dengan nama
XEAppInformation.
4. Kemudian tambahkan xaml kode berikut:
<ContentPage.Content>
<StackLayout>
<Button x:Name="btnAppName" Text="Nama Aplikasi"
Clicked="btnAppName_Clicked" />
<Button x:Name="btnPackageName" Text="Nama Package"
Clicked="btnPackageName_Clicked" />
<Button x:Name="btnVersion" Text="Nama Versi"
Clicked="btnVersion_Clicked" />
<Button x:Name="btnBuildNum" Text="Build Number"
Clicked="btnBuildNum_Clicked" />
</StackLayout>
</ContentPage.Content>
6. Jalankan aplikasi pada devices/emulator dengan menekan tombol F5, maka akan dihasilkan
tampilan sebagai berikut:
69
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
[assembly: UsesPermission(Android.Manifest.Permission.BatteryStats)]
<StackLayout>
<Button x:Name="btnBatteryStatus" Text="Cek Status"
Clicked="btnBatteryStatus_Clicked" />
</StackLayout>
public XEBatteryInfo()
{
InitializeComponent();
Battery.BatteryInfoChanged += Battery_BatteryInfoChanged;
Battery.EnergySaverStatusChanged += Battery_EnergySaverStatusChanged;
}
70
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
switch (source)
{
case BatteryPowerSource.Battery:
keterangan += "Menggunakan Battery\n";
break;
case BatteryPowerSource.AC:
keterangan += "Menggunakan AC Power\n";
break;
case BatteryPowerSource.Usb:
keterangan += "Charge menggunakan Usb\n";
break;
case BatteryPowerSource.Wireless:
keterangan += "Charge menggunakan Wireless\n";
break;
case BatteryPowerSource.Unknown:
keterangan += "Charge tidak diketahui\n";
break;
71
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
1. Buat halaman baru dengan nama XEGeolocation, kemudian tambahkan xaml berikut:
<StackLayout>
<Button x:Name="btnGeolocation" Text="Geoloation" />
</StackLayout>
2. Tambahkan permission berikut pada Android Project. Tambahkan kode berikut pada file
AssemblyInfo.cs.
[assembly: UsesPermission(Android.Manifest.Permission.AccessCoarseLocation)]
[assembly: UsesPermission(Android.Manifest.Permission.AccessFineLocation)]
[assembly: UsesFeature("android.hardware.location", Required = false)]
[assembly: UsesFeature("android.hardware.location.gps", Required = false)]
[assembly: UsesFeature("android.hardware.location.network", Required = false)]
72
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
4. Kemudian jalankan aplikasinya, jika anda belum mengaktifkan fitur lokasi pada devices, maka
akan ditampilkan notifikasi sebagai berikut:
5. Agar aplikasi dapat digunakan aktifkan fitur location/GPS pada devices. Maka akan
ditampilkan informasi geolocationnya.
1. Buat halaman baru dengan nama XEGeocoding dan tambahkan kode xaml berikut:
<StackLayout>
<Entry x:Name="txtAlamat" Placeholder="Masukan Alamat" />
<Button x:Name="btnGeocoding" Text="Geocoding"
Clicked="btnGeocoding_Clicked" />
</StackLayout>
73
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
3. Kemudian jalankan aplikasi dan ketikan alamat tertentu, maka akan ditampilkan posisi
latitude dan longitude dari alamat tersebut.
4. Anda juga dapat melakukan reverse geocoding dari koordinat latitude dan longitude.
5. Tambahkan entry pada halaman xaml untuk memasukan data latitude dan longitude.
74
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
await DisplayAlert("Keterangan",geocodeAddress,"OK");
}
}
catch (FeatureNotSupportedException fnsEx)
{
await DisplayAlert("Error", fnsEx.Message, "OK");
}
catch (Exception ex)
{
await DisplayAlert("Error", ex.Message, "OK");
}
}
1. Buat halaman baru dengan nama XEMap. Kemudian tambahkan kode xaml berikut:
<StackLayout>
<Button x:Name="btnMap" Text="Map" Clicked="btnMap_Clicked" />
<Button x:Name="btnPlacemark" Text="Placemark"
Clicked="btnPlacemark_Clicked" />
</StackLayout>
75
Cross Platform Mobile Develpment with Xamarin & Visual Studio 2019
3. Jalankan aplikasi untuk membuka map sesuai lokasi yang telah ditentukan.
4. Anda juga dapat memasukan informasi placemark yang lebih lengkap sebagai berikut:
76