Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android Lollipop
Code

Android'de RecyclerView ve CardView'e Giriş

by
Difficulty:IntermediateLength:LongLanguages:

Turkish (Türkçe) translation by Nevres Emre Alsancak (you can also view the original English article)

Verileri görüntülemek için listeler kullanan bir Android uygulaması oluşturmak istiyorsanız Android Lollipop, hayatınızı kolaylaştırmak için RecyclerView ve CardView adlı iki yeni widget sunmaktadır. Bu widget'leri kullanarak, uygulamanızın Google'ın material tasarım yönergelerine uygun bir görünüm ve hava vermesi çok kolaydır.

Ön şartlar

Takip etmek için Android Studio'nun en son sürümünü kullanıyor olmalısınız. Bunu Android Geliştirici web sitesinden indirebilirsiniz.

1. Eski Sürüm Desteği

Bu yazı hazırlanırken, Android cihazlarının %2'sinden azı Android Lolipop çalıştırmakta. Ancak v7 Destek Kitaplığı(Support Library) sayesinde, projenizin build.grade dosyasındaki bağımlılıklar(dependencies) bölümüne aşağıdaki satırları ekleyerek Android'in eski sürümlerini çalıştıran cihazlarda RecyclerView ve CardView widget'larını kullanabilirsiniz:

2. Bir CardView Oluşturma

CardView bir ViewGroup'tur. Herhangi bir ViewGroup gibi, bir layout XML(düzen XML) dosyasıyla Activity(Etkinlik) veya Fragment(Parça)'a eklenebilir.

Boş bir CardView oluşturmak için, aşağıdaki kodu layout XML'inize ekleyin:

Daha gerçekçi bir örnek için, şimdi bir LinearLayout oluşturalım ve içine bir CardView yerleştirelim. CardView, örneğin bir kişiyi temsil edebilir ve aşağıdakileri içerebilir:

  • Kişinin ismini görüntülemek için bir TextView
  • Kişinin yaşını görüntülemek için bir TextView
  • Kişinin fotoğrafını görüntülemek için bir ImageView

XML şu şekilde görünecektir:

Bu XML, bir Activity düzeni olarak kullanılıyorsa, TextView ve ImageView alanları geçerli değerlere sahipse, o zaman bu bir Android cihazında şöyle görüntülenir:

A Stand-alone Card

3. Bir RecyclerView Oluşturma

1. Adım: Bir Düzende Tanımlanması

RecyclerView örneğini(instance) kullanmak biraz daha karışıktır. Ama bir layout XML dosyasında tanımlanması oldukça kolaydır. Bunu bir düzen içinde aşağıdaki gibi tanımlayabilirsiniz:

Activity'nizde bir işleyici(handle) olarak elde etmek için aşağıdaki parçayı kullanın:

RecyclerView'ın boyutunun değişmeyeceğinden eminseniz, performansı artırmak için aşağıdakileri ekleyebilirsiniz:

2. Adım: Bir LayoutManager Kullanma

ListView'in aksine, RecyclerView öğelerinin konumunu yönetmek için bir LayoutManager'a ihtiyaç duyar. Kendi LayoutManager'ınızı RecyclerView.LayoutManager sınıfını genişleterek(extend) tanımlayabilirsiniz. Ama çoğu durumda, önceden tanımlanmış LayoutManager alt sınıflarından birini kullanabilirsiniz:

  • LinearLayoutManager
  • GridLayoutManager
  • StaggeredGridLayoutManager

Bu derste, bir LinearLayoutManager kullanacağım. Bu LayoutManager alt sınıfı, varsayılan olarak, RecyclerView'ınızı bir ListView gibi gösterecektir.

3. Adım: Verilerin Tanımlanması

Bir ListView gibi, RecyclerView'de verisine erişilebilmesi için bir bağdaştırıcıya(adapter) ihtiyaç duyar. Ancak bir bağdaştırıcı oluşturmadan önce kullanabileceimiz verileri oluşturalım. Bir kişiyi temsil etmek için basit bir sınıf oluşturun ve ardından Kişi nesnelerinin bir Listesini başlatan bir metod yazın:

4. Adım: Bir Bağdaştırıcı Oluşturma

RecyclerView'ın kullanabileceği  bir bağdaştırıcı oluşturmak için RecyclerView.Adapter'ı genişletmeniz gerekir. Bu bağdaştırıcı, görünüm tutucu dizayn sablonunu(view holder design pattern) izler; buda RecyclerView.ViewHolder'ı genişleten özel bir sınıf tanımlamanız anlamına gelir. Bu şablon, pahalı findViewById yöntemine yapılan çağrı sayısını en aza indirir.

Bu derste daha önce, bir kişiyi temsil eden bir CardView için XML düzenini zaten tanımladık. Şimdi bu düzeni yeniden kullanacağız. Özel ViewHolder constructor'ının içinde, RecyclerView öğelerimize ait görüntüleri(views) başlatın.

Ardından, RecyclerView'un görüntülediği verilere ulaşmamızı sağlayan bir işleyicinin olması için özel bağdaştırıcıya bir constructor ekleyin. Verilerimiz Kişi nesneleri listesi şeklinde olduğundan aşağıdaki kodu kullanın:

RecyclerView.Adapter, yazmamız(override) gereken üç soyut(abstract) yöntem içeriyor. getItemCount yöntemiyle başlayalım. Bu veride bulunan öğelerin sayısını vermelidir. Verilerimiz bir List şeklinde olduğundan, yalnızca List nesnesinde size yöntemini çağırmamız yeterlidir:

Ardından onCreateViewHolder yöntemini yazalım. Adından da anlaşılacağı gibi bu yöntem özel ViewHolder'ın başlatılması sırasında çağrılır. RecyclerView'in her bir öğesinin kullanması gereken düzeni belirtiyoruz. Bu, LayoutInflater'ı kullanarak düzeni yaratıp, çıktının(output) özel ViewHolder constructor'ına iletilmesiyle yapılır

RecyclerView'in her bir öğesinin içeriğini belirlemek için onBindViewHolder öğesini yazın. Bu yöntem, ListView'ın bağdaştırıcısının getView yöntemine çok benzer. Örneğimizde, işte burada CardView'in ad, yaş ve fotoğraf alanlarının değerlerini belirlememiz gerekir.

Son olarak onAttachedToRecyclerView yöntemini yeniden yazmamız gerekir. Şimdilik, aşağıda gösterildiği gibi bu yöntemin üst sınıfındaki(superclass) uygulanmasını basitçe kullanabiliriz.

5. Adım: Bağdaştırıcıyı Kullanma

Artık bağdaştırıcı hazır olduğuna göre, bağdaştırıcıyı başlatmak ve kullanmak için  Activity bölümünde bağdaştırıcının constructor'ını ve RecyclerView'ın setAdapter yöntemini çağıran aşağıdaki kodu ekleyin:

6. Adım: Derleyin ve Çalıştırın

Bir Android cihazında RecyclerView örneğini çalıştırdığınızda, aşağıdaki sonuca benzer bir şey görmeniz gerekir.

Sonuç

Bu yazıda, Android Lollipop'la tanıtılan CardView ve RecyclerView widget'larını kullanmayı öğrendiniz. Ayrıca, Material Tasarım uygulamalarında bu widget'ların nasıl kullanılacağına ilişkin örnekler gördünüz. Unutmayınki, RecyclerView, ListView'ın yaptığı her şeyi yapmasına rağmen, küçük veri kümeleri için, daha az kod satırı gerektirdiğinden, bir ListView kullanmak daha uygundur.

CardView ve RecyclerView sınıfları hakkında daha fazla bilgi için Android Geliştiricileri Referansına bakabilirsiniz.


Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.