Dinamik listeleri özelleştirme   Android Jetpack'in bir parçasıdır.

Compose yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Compose'da düzenlerle nasıl çalışacağınızı öğrenin.

RecyclerView nesnelerini ihtiyaçlarınıza göre özelleştirebilirsiniz. RecyclerView ile dinamik listeler oluşturma bölümünde açıklanan standart sınıflar, çoğu geliştiricinin ihtiyaç duyduğu tüm işlevleri sağlar. Çoğu durumda, yalnızca her görünüm tutucu için görünümü tasarlamanız ve bu görünümleri uygun verilerle güncelleyecek kodu yazmanız yeterlidir. Ancak uygulamanızın özel gereksinimleri varsa standart davranışı çeşitli şekillerde değiştirebilirsiniz. Bu belgede, olası özelleştirmelerden bazıları açıklanmaktadır.

Düzeni değiştirme

RecyclerView, ekrandaki öğeleri konumlandırmak ve artık kullanıcı tarafından görülemeyen öğe görünümlerinin ne zaman yeniden kullanılacağını belirlemek için bir düzen yöneticisi kullanır. Bir görünümü yeniden kullanmak veya geri dönüştürmek için düzen yöneticisi, adaptörden görünümün içeriğini veri kümesindeki farklı bir öğeyle değiştirmesini isteyebilir. Görünümlerin bu şekilde geri dönüştürülmesi, gereksiz görünümler oluşturulmasını veya pahalı aramalar yapılmasını önleyerek performansı artırır.findViewById() Android Destek Kitaplığı, her biri birçok özelleştirme seçeneği sunan üç standart düzen yöneticisi içerir:

  • LinearLayoutManager: öğeleri tek boyutlu bir listede düzenler. LinearLayoutManager ile RecyclerView kullanmak, ListView düzeni gibi işlevler sağlar.
  • GridLayoutManager: öğeleri dama tahtasındaki kareler gibi iki boyutlu bir ızgarada düzenler. GridLayoutManager ile RecyclerView kullanmak, GridView düzeni gibi işlevler sağlar.
  • StaggeredGridLayoutManager: Öğeleri iki boyutlu bir ızgarada düzenler. Her sütun, bir öncekinden biraz kaydırılır. Bu, Amerikan bayrağındaki yıldızlara benzer.

Bu düzen yöneticileri ihtiyaçlarınıza uygun değilse RecyclerView.LayoutManager soyut sınıfını genişleterek kendi düzen yöneticinizi oluşturabilirsiniz.

Öğe animasyonları ekleme

Bir öğe değiştiğinde RecyclerView, görünümünü değiştirmek için bir animatör kullanır. Bu animatör, soyut RecyclerView.ItemAnimator sınıfını genişleten bir nesnedir. Varsayılan olarak RecyclerView, animasyonu sağlamak için DefaultItemAnimator kullanır. Özel animasyonlar sağlamak istiyorsanız RecyclerView.ItemAnimator sınıfını genişleterek kendi animatör nesnenizi tanımlayabilirsiniz.

Liste öğesi seçimini etkinleştirme

recyclerview-selection kitaplığı, kullanıcıların dokunma veya fare girişi kullanarak RecyclerView listesindeki öğeleri seçmesine olanak tanır. Bu sayede, seçili bir öğenin görsel sunumu üzerinde kontrol sahibi olabilirsiniz. Ayrıca, seçim davranışını kontrol eden politikalar (ör. hangi öğelerin seçilebileceği ve kaç öğenin seçilebileceği) üzerinde de kontrol sahibi olabilirsiniz.

Bir RecyclerView örneğine seçim desteği eklemek için aşağıdaki adımları uygulayın:

  1. Hangi seçim anahtarı türünü kullanacağınızı belirleyin, ardından bir ItemKeyProvider oluşturun.

    Seçili öğeleri tanımlamak için kullanabileceğiniz üç anahtar türü vardır:

    Seçim anahtarı türleri hakkında ayrıntılı bilgi için SelectionTracker.Builder başlıklı makaleyi inceleyin.

  2. ItemDetailsLookup uygulayın.
  3. ItemDetailsLookup, seçim kitaplığının belirli bir MotionEvent için RecyclerView öğeleriyle ilgili bilgilere erişmesine olanak tanır. Bu, bir RecyclerView.ViewHolder örneği tarafından yedeklenen veya bu örnekten çıkarılan ItemDetails örnekleri için etkili bir fabrikadır.

  4. Kullanıcının seçip seçmediğini yansıtmak için RecyclerView içindeki View nesnelerini güncelleyin.

    Seçim kitaplığı, seçilen öğeler için varsayılan bir görsel dekorasyon sağlamaz. onBindViewHolder() özelliğini uygularken bu değeri sağlayın. Aşağıdaki yaklaşımı öneririz:

    • onBindViewHolder() dilinde, öğenin seçili olup olmamasına bağlı olarak View nesnesinde true veya false ile setActivated() (değil setSelected()) işlevini çağırın.
    • Görünümün stilini, etkinleştirilmiş durumu gösterecek şekilde güncelleyin. Stili yapılandırmak için renk durumu listesi kaynağı kullanmanızı öneririz.
  5. Kullanıcıya seçim üzerinde işlem yapabileceği araçlar sunmak için ActionMode kullanın.
  6. Seçim değiştiğinde bildirim almak için bir SelectionTracker.SelectionObserver kaydedin. Bir seçim ilk oluşturulduğunda, bunu kullanıcıya sunmak ve seçime özel işlemler sağlamak için ActionMode başlatın. Örneğin, ActionMode çubuğuna bir silme düğmesi ekleyebilir ve seçimi temizlemek için çubuktaki geri okunu bağlayabilirsiniz. Seçim boşaldığında (kullanıcı seçimi son kez temizlerse) işlem modunu sonlandırın.

  7. Yorumlanan ikincil işlemleri gerçekleştirme
  8. Etkinlik işleme ardışık düzeninin sonunda kitaplık, kullanıcının bir öğeye dokunarak etkinleştirmeye çalıştığını veya bir öğeyi ya da seçili öğe grubunu sürüklemeye çalıştığını belirleyebilir. Uygun dinleyiciyi kaydederek bu yorumlara tepki verin. Daha fazla bilgi için SelectionTracker.Builder başlıklı makaleyi inceleyin.

  9. SelectionTracker.Builder ile her şeyi bir araya getirin.
  10. Aşağıdaki örnekte, bu parçaların nasıl bir araya getirileceği gösterilmektedir:

    Kotlin

        var tracker = SelectionTracker.Builder(
            "my-selection-id",
            recyclerView,
            StableIdKeyProvider(recyclerView),
            MyDetailsLookup(recyclerView),
            StorageStrategy.createLongStorage())
                .withOnItemActivatedListener(myItemActivatedListener)
                .build()
        

    Java

        SelectionTracker tracker = new SelectionTracker.Builder<>(
                "my-selection-id",
                recyclerView,
                new StableIdKeyProvider(recyclerView),
                new MyDetailsLookup(recyclerView),
                StorageStrategy.createLongStorage())
                .withOnItemActivatedListener(myItemActivatedListener)
                .build();
        

    Bir SelectionTracker örneği oluşturmak için uygulamanızın, RecyclerView'yi ilk kullanıma hazırlamak için kullandığınız RecyclerView.Adapter değerini SelectionTracker.Builder değerine sağlaması gerekir. Bu nedenle, SelectionTracker örneğini oluşturduktan sonra RecyclerView.Adapter örneğinize ekleyin. Aksi takdirde, bir öğenin seçili durumunu onBindViewHolder() yönteminden kontrol edemezsiniz.

  11. Seçimi etkinlik yaşam döngüsü etkinliklerine dahil edin.
  12. Seçim durumunu etkinlik yaşam döngüsü olayları boyunca korumak için uygulamanızın, etkinliğin onSaveInstanceState() ve onRestoreInstanceState() yöntemlerinden sırasıyla seçim izleyicinin onSaveInstanceState() ve onRestoreInstanceState() yöntemlerini çağırması gerekir. Uygulamanızın, SelectionTracker.Builder oluşturucuya benzersiz bir seçim kimliği de sağlaması gerekir. Bir etkinlik veya parçada birden fazla farklı, seçilebilir liste bulunabileceğinden ve bunların tümünün kaydedilmiş durumlarında kalması gerektiğinden bu kimlik gereklidir.

Ek kaynaklar

Daha fazla bilgi için aşağıdaki referanslara bakın.