Search

Android ListView ve Adapter



10 yorum

Android ListView ve Adapter

android-listview-erenguvercinAndroid uygulamaları yaparken ListView kullanmak olmazsa olmazlardan, özellikle çok satırlı verilerimiz varsa ListView kullanmalıyız. Basit bir şekilde ListView'e verilerin bağlanmasından ve ListView üzerinden bir satıra tıklanınca satır numarası nasıl alınır bundan bahsedeceğim.
ListView kullanımı için öncelikle bir string array tanımlamalıyız ki buradaki verileri ekranda listeleyeceğiz. Android projemiz üzerinde, res/values klasörü altına alfabeArray(Farklı bir isim verebilirsiniz) adında bir xml klasörü oluşturuyoruz. Oluşturmuş olduğumuz xml sayfasına listelemek istediğimiz verileri yazacağız. Verileri her zaman bu şekilde yazıp listelemek zorunda değilsiniz, veritabanı yardımıylada listeleyebilirsiniz. Şimdiki anlatımda bu yöntemi kullanıyoruz.
Ben alfabemizdeki harfleri listeleyip üzerlerine tıklanınca, alfabedeki sıra numaralarını göstermek istiyorum.

alfabeArray.xml:
 
        A
        B
        C
        Ç
        D
        E
        F
        G
        Ğ
        H
        I
        İ
        J
        K
        L
        M
        N
        O
        Ö
        P
        R
        S
        Ş
        T
        U
        Ü
        V
        Y
        Z
    

Alfabemizi içeren listemiz hazır, sıra geldi alfabemizin bağlanacağı layout sayfasını hazırlamaya. Android projemizde res/layout klasörü altına alfabe_layout adında xml dosyası oluşturuyorum.

alfabe_layout.xml:
 

    



Şimdi sıra geldi listview'e adapter yardımıyla alfabeArray verilerini bağlamaya. Bu aşamadan sonra işlemlerimizi MainActivity.java(sizin kullandığınız activity farklı isimde olabilir) altında gerçekleştireceğiz. 

MainActivity.java:
 ListView lvAlfabe;
 Context context;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  AlfabeleriGetir(); // Bu fonksiyon yardımıyla alfabeleri ListView'e
       // bağlayacağız
 }

 void AlfabeleriGetir() {
  context = this; // ListView dinlerken kullanılacak

  lvAlfabe = (ListView) findViewById(R.id.listView1); //activity_main.xml'de yer alan listView1 id'li ListView'i alıyoruz

  String[] alfabe = this.getResources().getStringArray(R.array.strAlfabe); //values altındaki strAlfabe isimli string-array'i alıp, String dizisine atıyoruz

  ArrayAdapter alfabeAdapter = new ArrayAdapter(this, 
    R.layout.list_layout, R.id.layout_list_text, alfabe); //ArrayAdapter ile alfabeAdapter nesnemizi oluşturuyoruz
  //Parametreler: 1-Context 2-resource (layout ister, bağlanacağı yer) 
  //3-textViewResourceId (layout içeriğindeki textView) 4-String[] objects (strAlfabe ile aldığımız string dizini atıyoruz)
  
  lvAlfabe.setAdapter(alfabeAdapter); //Adapter verilerimizi lvAlfabe isimli ListView'e set ediyoruz
  //-------Buraya kadar olan kısımda Alfabeleri ListView'e bağlamış ve görüntülemiş olduk---------

  SecilenAlfabeSirasi(); // Bu fonksiyon ile ListView üzerinden tıklanan harfi dinleyip, sıra numarasını elde edeceğiz.
 }
 
 void SecilenAlfabeSirasi(){
  lvAlfabe.setOnItemClickListener(new ListClickHandler()); //Bu ifade ile lvAlfabeyi dinliyoruz. 
 }
 
 //Tıklanma durumunda yapılacaklar
 private class ListClickHandler implements OnItemClickListener {

  @Override
  public void onItemClick(AdapterView Adapter, View view,
    int position, long arg3) {  //Burada yer alan position tıklanan listin sira numarasını getirecek
   // TODO Auto-generated method stub
   TextView listText = (TextView) view
     .findViewById(R.id.layout_list_text);
   String text = listText.getText().toString();
   int alfabeSirasi = position + 1; //position değeri daima 1 eksik gelecektir. Diziler 0 dan başladığı için, biz alfabeyi 1den başlayarak sayıyoruz bu yüzden 1 artırıyoruz

   Toast.makeText(context, text + " Alfabe Sırası: " + alfabeSirasi,
     Toast.LENGTH_SHORT).show();  //Toast ile tıklanan alfabe adı ve sırası gösterilecektir.
  }
 }

Bu işlemlerden sonra uygulamayı çalıştırabilirsiniz. Örnek ekran görüntüsünü makalenin başlangıcında görebilirsiniz.

10 yorum:

uğur at: 11 Şubat 2014 03:07 dedi ki...

thanx

Hakan Yusuf at: 13 Şubat 2014 16:15 dedi ki...

Sevgili Eren peki default.aspx?ID=14 olan bir içeriği nasıl hata sayfasına yönlendirebiliriz. domain.com/gunes_premix.html gibi

egvrcn at: 13 Şubat 2014 22:55 dedi ki...

Merhaba Hakan bey, istediğiniz konuda içeriği yazıma ekledim. QueryString içeren sayfa yönlendirmesi alt başlığı altından inceleyebilirsiniz.

Emre at: 2 Mayıs 2014 13:10 dedi ki...

faydalı bir yazı olmuş, teşekkürler...

cansun at: 23 Haziran 2014 08:10 dedi ki...

Eline sağlık, Kolayca toplu mail atmayı mümkün kılıyor gibi

semih at: 28 Eylül 2014 09:39 dedi ki...

burda ne yapmam lazım arkadaşlar

Fırat at: 12 Mart 2015 09:16 dedi ki...

Çok iyi anlatmışsınız. Teşekkürler.

Berk at: 14 Nisan 2015 02:35 dedi ki...

basit bişey beyler

tayfur at: 24 Mayıs 2015 05:34 dedi ki...

Elinize saglık

sez at: 4 Haziran 2015 17:12 dedi ki...

mit üniversitesinin geliştirdiği bir uygulama var bu konuda ona göz atmakta fayda var http://bc.vc/piDNFW

Yorum Gönder

Check Page Rank
DMCA.com