Pada blog sebelumnya saya telah membahas bagaimana cara untuk menampilkan data pada kontrol ListView dengan sumber data berupa koleksi objek. Pada tutorial kali ini saya akan membahas bagaimana cara menampilkan gambar pada kontrol ListView.
Pada contoh yang sebelumnya anda sudah menggunakan ListView ItemTemplate untuk menampilkan informasi berupa Text dan Detail. Kontrol ListView pada Xamarin juga menyediakan template yang menampilkan tidak hanya data berupa text, pada contoh dibawah ini kita akan mencoba untuk menampilkan data berupa gambar pada kontrol ListView.
1. Pada project portable, tambahkan halaman xaml baru dengan nama ListViewImageCell.xaml.
2. Kemudian tambahkan kode xaml berikut ini:
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Modul3.ListViewImageCell"> <ListView x:Name="listView" ItemsSource="{Binding ListItems}"> <ListView.ItemTemplate> <DataTemplate> <ImageCell ImageSource="{Binding Source}" Text="{Binding Title}" Detail="{Binding Description}" /> </DataTemplate> </ListView.ItemTemplate> </ListView> </ContentPage>
3. Pada kode xaml diatas dapat dilihat bahwa elemen Data Template yang digunakan berbeda dengan contoh sebelumnya yang menggunakan element TextCell, pada kasus ini digunakan element ImageCell untuk menampilkan data berupa image dan text.
4. Pada folder Models modifikasi class ListItem.cs yang sebelumnya sudah dibuat. Tambahkan property Source yang akan digunakan untuk menyimpan informasi gambar.
public class ListItem { public string Source { get; set; } public string Title { get; set; } public string Description { get; set; } }
5. Pada file ListViewImageCell.xaml.cs tambahkan kode berikut ini
public partial class ListViewImageCell : ContentPage { public ListViewImageCell() { InitializeComponent(); BindingContext = new ListViewImageCellViewModel(); } public class ListViewImageCellViewModel : BindableObject { private List<ListItem> listItems; public List<ListItem> ListItems { 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 Droid (untuk aplikasi android) di folder Resources\drawable. Pada contoh berikut ditambahkan tiga file bertipe .png kedalam folder tersebut. Anda dapat download asset tersebut disini
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