Merhaba arkadaşlar,
Xamarin‘de elimizde ki bir datayı göstermek için kullanılan Listview‘dan bahsedeceğim.
Listview‘ı .Nette ki Grid’lere benzetebilirsiniz. .Net‘ te Gride bağlı datasource burada Adapter olarak adlandırılmış. .Net‘te Gridte bir veri göstermek için datasource’a bir veri verdiğimizde nasıl otomatik olarak listeliyorsa, burada da adapter verdiğimizde otomatik olarak listeliyor gibi düşünebilirsiniz.
Başlayalım
XamarinListviewTest adında Boş bir proje Android Projesi açtım.
Main.axml dosyasına 1 adet Listview ekledim;
<?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" android:minWidth="25px" android:minHeight="25px"> <ListView android:minWidth="25px" android:minHeight="25px" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/mainListview" /> </LinearLayout>
MainActivity.cs classını aşağıda ki gibi düzenledim.
using Android.App; using Android.Widget; using Android.OS; namespace XamarinListviewTest { [Activity(Label = "XamarinListviewTest", MainLauncher = true)] public class MainActivity : Activity { string[] data; protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); //Datamız; data = new string[] { "Volkan", "Isla", "Skrtel", "Neto", "Hasan Ali", "Souza", "Ozan", "Giuliano", "Alper", "Valbuena", "Janssen"}; //Yeni adaptör oluşturuluyor. //Android.Resource.Layout.SimpleListItem1 : Bu parametre listviewımızın tipini belirtiyor. ArrayAdapter arrayAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, data); //Main.axml dosyasında ki Listview objemizi çekiyoruz. ListView mainListView = FindViewById<ListView>(Resource.Id.mainListview); //Adaptör veriliyor. mainListView.Adapter = arrayAdapter; //Bir veriye tıklandığında yapılacka işlem. mainListView.ItemClick += MainListView_ItemClick; } private void MainListView_ItemClick(object sender, AdapterView.ItemClickEventArgs e) { //Tıklanan satır yakalanır, ekrana basılır. Toast.MakeText(this, data[e.Position].ToString(), ToastLength.Long).Show(); } } }
Dikkat ettiyseniz, burada sadece 1 adet string[] dizimizi listeledik yani bu yapı ile sadece 1 adet veriyi listeyebiliyoruz.
Eğer birden fazla datayı listelemek istersek BaseAdapter classını extend edip, bazı methodlarını overrite etmeli kendi custom adapterimizi yazmalıyız.
Burada ki arkadaş nasıl yapılacağını anlatmış, inceleyebilirsiniz : Create Custom Listview – BaseAdapter Extends
Bu örnek ile ilgili yaralı olabilecek kaynaklar;
Listview – Xamarin
Creating A List View
İyi çalışmalar.
Pingback: Xamarin – SQLite işlemleri | Semih Çelikol