Android Programlama 7 -> ListView Kullanımı

ListView

Birbiriyle ilişkili verileri kullanıcıya sunmak için liste kulllanmak oldukça sık tercih edilen bir yöntemdir.

Android de listeleme işlemi için ListView isimli öge kullanılır. ListView, kendi içinde satır satır textView ögeleri bulunduran bir yapıdır.

Şimdi ListView yapısını anlamak için basit bir örnek üzerinden ilerleyelim.
Aşağıdaki görseldeki gibi bir ListView oluşturacağız ve bu EditText'e yazdığımız ögeleri ListView içerisinde görüntülenecek ve ListView ögesine tıkladığımızda toast mesajı olarak bize ListView deki tıklanan ögenin değerini gösterecek.


Öncelikle ListView'ı üzerinde tutacak olan Activity sayfasını düzenliyoruz. Bunun için res/layout/ klasörü içerisindeki activity_main.xml dosyasını kullanıyoruz.



<EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="72dp"
        android:ems="10"
        android:hint="Eklencek eleman"
        android:inputType="textPersonName"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="60dp"
        android:layout_marginEnd="56dp"
        android:text="Ekle"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ListView
        android:id="@+id/listview"
        android:layout_width="395dp"
        android:layout_height="436dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.634" />

Burada veri alabilmek için bir editText , verileri listView e aktarmak için bir buton ve verileri tuttuğumuz bir listView oluşturduk.

Dikkat edilmesi gereken nokta ListView ögesine atadığımız ID. Çünkü ListVİew ögesi oluşturulduğunda daha önce öğrendiğimiz ögeler gibi otomatik ID ataması yapılmamaktadır.

Daha sonra MainActivity e geri dönüyoruz. Burada java dan da hatırladığımız String dizisi oluşturuyoruz.
ListView, editText ve butonumuzu global olarak deklare ediyoruz. Ve bir de ArrayList sınıfından jenerik string "<string>" bir dinamikDizi deklare ediyoruz.



    String[] dizi ={};
    ListView listview;
    EditText et1;
    Button button;
    ArrayList<String> dinamikDizi;


Daha sonra onCreate metodu içersinde her zamanki gibi tanımlamalarımızı yapıyoruz ve burada yeni bir yapıya ihtiyaç duyuyoruz. Bu yapı ArrayAdapter yapısı. Android programlama da diziler ListVİew ile direkt bağlantı kuramamaktadır. Bu nedenle ikisi arasındaki bağlantıyı sağlayabilmek için Array Adapter kullanılmaktadır. Ve adapter diziye dinamiklik katar.





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

        dinamikDizi = new ArrayList<String>();
        et1 =(EditText)findViewById(R.id.editText);

        listview =(ListView)findViewById(R.id.listview);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,dinamikDizi);


Buradaki adapter tanımlamasında geçen android kelimesi önemlidir sadece android programlama için bu ibare yer alır.

Daha sonra butonumuza bir click olayı ekliyoruz.



findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dinamikDizi.add(et1.getText().toString());
            }
        });



Butona tıklandığında editText içerisindeki öge oluşturduğumuz dinamikDiziye eklenecek artık.
Şimdi dizi ile ListView i bağlamak için adapter kullanıyoruz.


 listview.setAdapter(adapter);


Bu şekilde listVİew ve dizi arasındaki bağlantıyı kurmuş olduk.
Şimdi listView üzerindeki ögelere tıklandığında toast mesajı yayınlama kısmına geçelim.


listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                Toast.makeText(MainActivity.this,dinamikDizi.get(position), Toast.LENGTH_SHORT).show();

            }
        });



Bunu yaopabilmek için de position dan yararlanıyoruz ve bu şekilde programımızı bitirmiş oluyoruz.






Yorumlar

Bu blogdaki popüler yayınlar

JAVA İLE INTERFACE KULLANIMI

Android Programlama 5 -> Timer -> Count Down Timer

Android Programlama 1 -> Buton Ekleme - Toast Mesajı - Activityler Arası Geçiş