Önce Manifest.xml dosyasına internet erişimi izni veriyoruz.
Sonra gradle'ımıza bu kütüphaneleri ekleyip sync ediyoruz.
Sonra recycler view içeren bir layout hazırlıyoruz, burada pek birşey yok.
Sonra gördüğünüz gibi bu recycler view item'lerdan oluşuyor. Bu itemler aslında layout'tur.
Şimdi bu item'ın kodlarını ekleyelim:
Evet şimdi asıl zurnanın zırt dediği yere geliyoruz. Recycler view'ın bileşenlerini ve mantığını anlayalım.
Önce bir adapter class'ı oluşturuyoruz.
Bunun içinde bir ViewHolder class'ı oluşturup RecyclerView içindeki ViewHolder class'ını extend almamız gerekiyor. Daha sonra item içindeki göstereceğimiz değişkenleri ekleyip constructor oluşturalım. Zaten constructor oluşturmazsak Android Studio bize kızar.
Aslında bu class tüm viewları(itemleri) hold ediyor. Yani tüm bu itemler bu class'dan türetiliyor. Bunu da birazdan onBindHolder methodu içinde yapacağız.
Sonra en baştaki adapter class'ına dönüp RecyclerView.Adapter class'ını extend ediyoruz. Ve tip olarak <ViewHolder> tipini ekiyoruz. Gereken methodları implement ediyoruz.
Burada ise adapter için constructor oluşturuyoruz. Neden, çünkü adapter oluşturulduğunda gereken değişkenlerini ekleyebilmemiz için. Gereken değişkenler; image name, image url ve context dizileri. Context bulunduğu aktiviteyi temsil eder(?)
onCreateViewHolder metodu View'ın gösterilmesinden (inflate edilmesinden) sorumludur. Az evvel item bileşenlerini bulunduran ViewHolder Class'ından oluşturulan nesneyi kullanarak view oluşturur.
Bağlamalar onBindViewHolder metodu üzerinde yapılır. Bağlama derken mesela layout üzerine resim yüklenmesi, string eklenmesi işleri burada yapılır.
Hatta layout'a onClickListener eklenebilir. Adapter kodları burada:
Şimdi main activiteye dönüp bir recycler view oluşturalım. Ardından bir adaptör oluşturalım, adaptör bizden name array, url array ve context isteyecektir. Bunları ekleyelim. Ardından adaptörü set edelim.
En son bunu elde edeceğiz.

Tüm projeye buradan ulaşabilirsiniz: https://github.com/orhanavan/RecyclerView



Yorumlar
Yorum Gönder
Bir şeyler yaz...