Recyclerview’de Interface Kullanarak Tıklama Özelliği Verme

Ömer Ateş
2 min readAug 16, 2019

--

RegionApp

Belli bir özelliğe sahip elemanlar dizisini uygulamamızda göstermek için listeleme araçlarından birini kullanırız. Bu yazıda Recyclerview componentini kullanacağım.

Yaygın olarak şu işlem ile tıklama özelliği verilir; recyclerview eklenir, adapter sınıfı oluşturulur ve implement edilen onBindViewHolder() fonksiyonunda ilgili componente setOnClickListener() tanımlanarak gerekli işlemler içerisinde yapılır.

İlk işlem, tıklama işlemi tetiklemek için ve bilgileri alabilmek için gerekli olan bir interface oluşturmak.

CustomItemListener.kt

Burada interface içerisinde oluşturduğumuz onItemClick() fonksiyonunda string türünde bir değer alacağız. Siz de istediğiniz bir bilgi için bu fonksiyona uygun bir parametre verebilirsiniz.

Sıra geldi adapter içerisinde interface tanımlamaya.

RegionAdapter.kt

Recyclerview içinde adapter oluşturmayı şu an için detaylı bir şekilde anlatmayacağım. Sadece odaklanmamız gereken nokta onCreateViewHolder() fonksiyonun içerisi ve constructora parametre olarak verdiğimiz customItemLister. myViewHolder adında bir tane nesne oluşturup içerisine parametre olarak itemViewdeğişkenini veriyoruz. Şimdi ise oluşturulan view nesnemize tıklanıldığında yapılacak işlemi tanımlıyoruz. İçeride oluşturduğumuz interface metodumuz da bulunan fonksiyona parametre olarak listemizin tıklama işlemi gerçekleştiği andaki position değerinde bulunan elemanı iletiyoruz. RegionAdapter sınıfında işlemler bu kadar. Sırada adapter nesnemizi set ettiğimiz yerde istediğimiz bilgiyi almaya.

Adapter içerisine listemizi gönderdik ve ardından İnterface objesini oluşturarak ilgili fonksiyonu implement etmemizi sağladık. İmplement ettiğimizde ise artık parametredeki gelen region değerini istediğimiz gibi kullanabiliriz.

Elimden geldiğince anlatmaya çalıştım.Umarım anlatabilmişimdir.Tasarıma çok önem vermedim çünkü siz çok daha iyilerini yapabilirsiniz :) Projenin tamamına buradan ulaşabilirsiniz.Eksiklerim veya yanlışlarım varsa iletişim kanallarından benimle bağlantı kurabilirsiniz.

--

--