Dinamik listeyi ö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.

Nesneleri ihtiyaçlarınıza göre özelleştirebilirsiniz. RecyclerView Create dynamic lists with RecyclerView başlıklı makalede 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üncellemek için kodu yazmanız gerekir. Ancak uygulamanızın belirli 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 kullanıcıya artık görünür olmayan öğ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 bir düzen yöneticisi, bağdaştırıcıdan görünümün içeriğini veri kümesindeki farklı bir öğeyle değiştirmesini isteyebilir. Görünümleri bu şekilde yeniden kullanmak, gereksiz görünümler oluşturmaktan veya pahalı findViewById() aramalar yapmaktan kaçınarak performansı artırır. 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. RecyclerView ile GridLayoutManager 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ılmıştır (ör. ABD bayrağındaki yıldızlar).

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

Öğe animasyonları ekleme

Bir öğe her değiştiğinde RecyclerView, görünümünü değiştirmek için animatör kullanır. Bu animatör, soyut RecyclerView.ItemAnimator sınıfını genişleten bir nesnedir. RecyclerView varsayılan olarak animasyonu sağlamak için DefaultItemAnimator kullanır. Özel animasyonlar sağlamak istiyorsanız RecyclerView.ItemAnimator öğesini 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şiyle RecyclerView listesindeki öğeleri seçmesine olanak tanır. Bu sayede, seçili bir öğenin görsel sunumu üzerinde kontrol sahibi olabilirsiniz. Ayrıca, hangi öğelerin seçime uygun olduğu ve kaç öğenin seçilebileceği gibi seçim davranışını kontrol eden politikalar üzerinde de kontrol sahibi olabilirsiniz.

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ıza karar verin ve ardından bir ItemKeyProvider oluşturun.

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

    Seçim anahtarı türleri hakkında ayrıntılı bilgi için SelectionTracker.Builder bölümüne bakın.

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

  4. Öğeyi güncelle View nesneleri, kullanıcının bunları seçip seçmediğini yansıtacak şekilde RecyclerView içinde.

    Seçim kitaplığı, seçilen öğeler için varsayılan görsel süsleme sağlamaz. onBindViewHolder() uygularken bunu sağlayın. Aşağıdaki yaklaşımı öneririz:

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

  7. Yorumlanan ikincil işlemleri gerçekleştirin.
  8. Etkinlik işleme hattının sonunda kitaplık, kullanıcının bir öğeye dokunarak etkinleştirmeye veya bir öğeyi ya da seçili öğeler grubunu sürüklemeye çalıştığını belirleyebilir. Uygun dinleyiciyi kaydederek bu yorumlara tepki verin. Daha fazla bilgi için SelectionTracker.Builder sayfasına bakın.

  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();
        

    SelectionTracker örneği oluşturmak için uygulamanızın, RecyclerView.Adapter RecyclerView öğesini SelectionTracker.Builder olarak başlatmak için kullandığınızla aynı RecyclerView.Adapter öğesini sağlaması gerekir. Bu nedenle, SelectionTracker örneğini oluşturduktan sonra RecyclerView.Adapter içine yerleştirin. 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ü etkinlikleri boyunca korumak için uygulamanızın, seçim izleyicinin onSaveInstanceState() ve onRestoreInstanceState() yöntemlerini sırasıyla etkinliğin onSaveInstanceState() ve onRestoreInstanceState() yöntemlerinden çağırması gerekir. Uygulamanızın, SelectionTracker.Builder oluşturucusuna benzersiz bir seçim kimliği de sağlaması gerekir. Bir etkinlik veya parça birden fazla farklı ve seçilebilir liste içerebileceğinden bu kimlik gereklidir. Bu listelerin tümü, kaydedilmiş durumlarında kalıcı hale getirilmelidir.

Ek kaynaklar

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