Aracılığıyla paylaş


Xamarin.Android ListView

ListView, Android uygulamalarının önemli bir kullanıcı arabirimi bileşenidir; menü seçeneklerinin kısa listelerinden uzun kişi veya internet sık kullanılanları listesine kadar her yerde kullanılır. Yerleşik bir stille biçimlendirilebilen veya kapsamlı bir şekilde özelleştirilebilen satırların kaydırma listesini sunmak için basit bir yol sağlar.

Genel bakış

Liste görünümleri ve bağdaştırıcıları, Android Uygulamalarının en temel yapı taşları içinde yer alır. sınıfı, ListView kısa bir menü veya uzun bir kaydırma listesi olsun, verileri sunmak için esnek bir yol sağlar. Uygulamalarınız için mobil kullanımı kolay kullanıcı arabirimleri oluşturmanıza yardımcı olmak için hızlı kaydırma, dizinler ve tek veya birden çok seçim gibi kullanılabilirlik özellikleri sağlar. ÖrneğinListView, satır görünümlerinde bulunan verilerle beslemesi için bağdaştırıcı gerekir.

Bu kılavuzda, Xamarin.Android'de çeşitli Adapter sınıfların nasıl uygulanıp uygulanacakları ListView açıklanmaktadır. Ayrıca bir ListViewgörünümünün nasıl özelleştirileceği ve bellek tüketimini azaltmak için satır yeniden kullanımının önemi açıklanır. Etkinlik Yaşam Döngüsü'nin nasıl etkilediği ve Adapter kullandığı hakkında da bazı tartışmalar ListView vardır. Xamarin.iOS ile platformlar arası uygulamalar üzerinde çalışıyorsanız, ListView denetim yapısal olarak iOS'a UITableView benzer (ve Android Adapter ile benzerdir UITableViewSource).

İlk olarak, kısa bir öğreticide ListView temel kod örneği ile tanıtılması gerekir. Daha sonra, gerçek dünya uygulamalarında kullanmanıza ListView yardımcı olmak için daha gelişmiş konuların bağlantıları sağlanır.

Not

Pencere RecyclerView öğesi, öğesinin daha gelişmiş ve esnek bir sürümüdür ListView. (RecyclerViewveGridView) öğesinin ardılı ListView olacak şekilde tasarlandığından, yeni uygulama geliştirme yerine kullanmanızı RecyclerView ListView öneririz. Daha fazla bilgi için bkz . RecyclerView.

ListView Öğreticisi

ListViewViewGroup kaydırılabilir öğelerin listesini oluşturur. Liste öğeleri, kullanılarak IListAdapterlisteye otomatik olarak eklenir.

Bu öğreticide, bir dize dizisinden okunan ülke/bölge adlarının kaydırılabilir bir listesini oluşturacaksınız. Liste öğesi seçildiğinde, öğenin listedeki konumunu gösteren bir bildirim iletisi görüntülenir.

HelloListView adlı yeni bir proje başlatın.

list_item.xml adlı bir XML dosyası oluşturun ve bunu Kaynaklar/Düzen/ klasörüne kaydedin. Aşağıdakileri ekleyin:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="16sp">
</TextView>

Bu dosya içine yerleştirilecek ListViewher öğenin düzenini tanımlar.

sınıfını açın MainActivity.cs ve genişletecek ListActivity şekilde değiştirin (yerine Activity):

public class MainActivity : ListActivity
{

) yöntemi için OnCreate()aşağıdaki kodu ekleyin:

protected override void OnCreate (Bundle bundle)
{
    base.OnCreate (bundle);

    ListAdapter = new ArrayAdapter<string> (this, Resource.Layout.list_item, countries);

    ListView.TextFilterEnabled = true;

    ListView.ItemClick += delegate (object sender, AdapterView.ItemClickEventArgs args)
    {
        Toast.MakeText(Application, ((TextView)args.View).Text, ToastLength.Short).Show();
    };
}

Bunun Etkinlik (genellikle ile SetContentView(int)yaptığınız) için bir düzen dosyası yüklemediğini unutmayın. Bunun yerine, ListAdapter özelliği otomatik olarak bir ekler ListView öğesinin tüm ekranını doldurmak için ListActivity. Bu yöntem içine yerleştirilecek ListViewliste öğeleri dizisini yöneten bir ArrayAdapter<T>alır. ArrayAdapter<T> oluşturucu, uygulamayı Context, her liste öğesinin düzen açıklamasını (önceki adımda oluşturulmuş) ve bir T[] veya alır Java.Util.IList<T> içine eklenecek nesne dizisi ListView (bundan sonra tanımlanmıştır).

TextFilterEnabled özelliği, için metin filtrelemeyi ListViewaçar, böylece kullanıcı yazmaya başladığında liste filtrelenir.

ItemClick olay, tıklamalar için işleyicilere abone olmak için kullanılabilir. Bir öğe ListView tıklandığında işleyici çağrılır ve Toast ileti, tıklanan öğedeki metin kullanılarak görüntülenir.

için kendi düzen dosyanızı tanımlamak yerine platform tarafından sağlanan liste öğesi tasarımlarını ListAdapterkullanabilirsiniz. Örneğin yerine kullanmayı Android.Resource.Layout.SimpleListItem1 Resource.Layout.list_itemdeneyin.

Aşağıdaki using deyimi ekleyin:

using System;

Ardından, aşağıdaki dize dizisini öğesinin MainActivitybir üyesi olarak ekleyin:

static readonly string[] countries = new String[] {
    "Afghanistan","Albania","Algeria","American Samoa","Andorra",
    "Angola","Anguilla","Antarctica","Antigua and Barbuda","Argentina",
    "Armenia","Aruba","Australia","Austria","Azerbaijan",
    "Bahrain","Bangladesh","Barbados","Belarus","Belgium",
    "Belize","Benin","Bermuda","Bhutan","Bolivia",
    "Bosnia and Herzegovina","Botswana","Bouvet Island","Brazil","British Indian Ocean Territory",
    "British Virgin Islands","Brunei","Bulgaria","Burkina Faso","Burundi",
    "Cote d'Ivoire","Cambodia","Cameroon","Canada","Cape Verde",
    "Cayman Islands","Central African Republic","Chad","Chile","China",
    "Christmas Island","Cocos (Keeling) Islands","Colombia","Comoros","Congo",
    "Cook Islands","Costa Rica","Croatia","Cuba","Cyprus","Czech Republic",
    "Democratic Republic of the Congo","Denmark","Djibouti","Dominica","Dominican Republic",
    "East Timor","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea",
    "Estonia","Ethiopia","Faeroe Islands","Falkland Islands","Fiji","Finland",
    "Former Yugoslav Republic of Macedonia","France","French Guiana","French Polynesia",
    "French Southern Territories","Gabon","Georgia","Germany","Ghana","Gibraltar",
    "Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guinea","Guinea-Bissau",
    "Guyana","Haiti","Heard Island and McDonald Islands","Honduras","Hong Kong","Hungary",
    "Iceland","India","Indonesia","Iran","Iraq","Ireland","Israel","Italy","Jamaica",
    "Japan","Jordan","Kazakhstan","Kenya","Kiribati","Kuwait","Kyrgyzstan","Laos",
    "Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg",
    "Macau","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands",
    "Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova",
    "Monaco","Mongolia","Montserrat","Morocco","Mozambique","Myanmar","Namibia",
    "Nauru","Nepal","Netherlands","Netherlands Antilles","New Caledonia","New Zealand",
    "Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Korea","Northern Marianas",
    "Norway","Oman","Pakistan","Palau","Panama","Papua New Guinea","Paraguay","Peru",
    "Philippines","Pitcairn Islands","Poland","Portugal","Puerto Rico","Qatar",
    "Reunion","Romania","Russia","Rwanda","Sqo Tome and Principe","Saint Helena",
    "Saint Kitts and Nevis","Saint Lucia","Saint Pierre and Miquelon",
    "Saint Vincent and the Grenadines","Samoa","San Marino","Saudi Arabia","Senegal",
    "Seychelles","Sierra Leone","Singapore","Slovakia","Slovenia","Solomon Islands",
    "Somalia","South Africa","South Georgia and the South Sandwich Islands","South Korea",
    "Spain","Sri Lanka","Sudan","Suriname","Svalbard and Jan Mayen","Swaziland","Sweden",
    "Switzerland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","The Bahamas",
    "The Gambia","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey",
    "Turkmenistan","Turks and Caicos Islands","Tuvalu","Virgin Islands","Uganda",
    "Ukraine","United Arab Emirates","United Kingdom",
    "United States","United States Minor Outlying Islands","Uruguay","Uzbekistan",
    "Vanuatu","Vatican City","Venezuela","Vietnam","Wallis and Futuna","Western Sahara",
    "Yemen","Yugoslavia","Zambia","Zimbabwe"
  };

Bu, içine ListViewyerleştirilecek dize dizisidir.

Uygulamayı çalıştırın. Listeyi kaydırabilir veya filtre uygulamak için yazabilir, ardından ileti görmek için bir öğeye tıklayabilirsiniz. Şuna benzer bir şey görmeniz gerekir:

Ülke/bölge adlarıyla ListView örneği ekran görüntüsü

Sabit kodlanmış dize dizisi kullanmanın en iyi tasarım uygulaması olmadığını unutmayın. Basitlik için bu öğreticide kullanılanlardan biri, ListView Widget. Daha iyi bir yöntem, proje Kaynakları/Değerler/Strings.xml dosyanızdaki bir kaynak gibi bir dış kaynak tarafından tanımlanan dize string-array dizisine başvurmaktır. Örneğin:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string name="app_name">HelloListView</string>
  <string-array name="countries_array">
    <item>Bahrain</item>
    <item>Bangladesh</item>
    <item>Barbados</item>
    <item>Belarus</item>
    <item>Belgium</item>
    <item>Belize</item>
    <item>Benin</item>
  </string-array>
</resources>

için bu kaynak dizelerini kullanmak için ArrayAdapterözgün dizesini değiştirin ListAdapter aşağıdakilerle aynı çizgiye sahip:

string[] countries = Resources.GetStringArray (Resource.Array.countries_array);
ListAdapter = new ArrayAdapter<string> (this, Resource.Layout.list_item, countries);

Uygulamayı çalıştırın. Şuna benzer bir şey görmeniz gerekir:

Daha küçük ad listesi içeren ListView örneği ekran görüntüsü

ListView ile Daha Fazla Bilgi

Kalan konular (aşağıda bağlantılıdır) sınıfıyla çalışmaya ve bu sınıfla ListView kullanabileceğiniz farklı Bağdaştırıcı türü türlerine kapsamlı bir bakış içerir. Yapı aşağıdaki gibidir:

  • Görsel Görünüm : Denetimin ListView parçaları ve nasıl çalıştıkları.

  • Sınıflar – bir ListViewgörüntülemek için kullanılan sınıflara genel bakış.

  • ListView'da Verileri Görüntüleme – Basit bir veri listesi görüntüleme; kullanılabilirlik özelliklerini uygulama ListView's ; farklı yerleşik satır düzenlerini kullanma ve Bağdaştırıcılar'ın satır görünümlerini yeniden kullanarak bellekten nasıl tasarruf ettiği.

  • Özel görünüm – özel düzenler, yazı tipleri ve renklerle stilini ListView değiştirme.

  • SQLite kullanma – ile CursorAdapterbir SQLite veritabanından verileri görüntüleme.

  • Etkinlik Yaşam Döngüsü – Yaşam döngüsünde verilerinizi nerede doldurmanız gerektiği ve kaynakları ne zaman serbest bırakmanız gerektiği de dahil olmak üzere Etkinlikleri uygularken ListView tasarımla ilgili dikkat edilmesi gerekenler.

Tartışma (altı bölüme ayrılmıştır), nasıl kullanılacağına ListView ilişkin aşamalı olarak daha karmaşık örnekler sunmadan önce sınıfın kendisine genel bir bakışla başlar.

Özet

Bu konu kümesinde yerleşik özelliklerinin nasıl kullanılacağına ilişkin bazı örnekler sağlanmış ListView ve sunulmuştur ListActivity. Renkli düzenlere ve SQLite veritabanı kullanımına izin verilen özel uygulamalarını ListView ele aldı ve uygulamanızdaki ListView etkinlik yaşam döngüsünün ilgisine kısaca değindi.