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

Oluşturma yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Oluştur'da düzenleri nasıl kullanacağınızı öğrenin.

RecyclerView Öğeleri ihtiyaçlarınıza göre özelleştirebilirsiniz. Aşağıda açıklanan standart sınıflar, Google Analytics 4 ile RecyclerView, çoğu geliştiricinin ihtiyaç duyduğu tüm işlevleri sunar. Çoğu durumda, her bir görünüm tutucusu için görünümü tasarlamanız ve bu görünümleri uygun verilerle güncellemek için kodu yazmanız yeterlidir. Ancak uygulamanızda standart davranışı çeşitli yöntemlerle değiştirebilirsiniz. Bu dokümanda, olası özelleştirmelerin bazıları açıklanmaktadır.

Düzeni değiştirme

RecyclerView, öğeleri ekranda 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 düzen yöneticisi, bir görünümü yeniden kullanmak veya geri dönüştürmek için bağdaştırıcının görünümün içeriğini veri kümesinden farklı bir öğeyle değiştirmesini isteyebilir. Görüntülemelerin bu şekilde geri dönüştürülmesi, gereksiz görüntülemelerin oluşturulmasını veya pahalı findViewById() aramalarının yapılmasını önleyerek 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. Bir LinearLayoutManager ile RecyclerView, gibi işlevleri kullanarak ListView kullanır.
  • GridLayoutManager: iki boyutlu bir ızgarada (ör. bir düzlemdeki kareler) dama tahtası. RecyclerView kullanarak GridLayoutManager, aşağıdaki gibi işlevler sunar: GridView kullanır.
  • StaggeredGridLayoutManager: Öğeleri iki boyutlu bir ızgara şeklinde düzenler. Her sütun, bir Amerikan bayrağındaki yıldızlar gibi öncekinden biraz kaydırılır.

Bu düzen yöneticileri ihtiyaçlarınızı karşılamıyorsa aşağıdakileri yaparak kendi düzen yöneticilerinizi oluşturabilirsiniz: uzatmanın RecyclerView.LayoutManager. soyut sınıf.

Öğe animasyonları ekle

Bir öğe değiştiğinde RecyclerView, görünümünü değiştirmek için bir animasyon aracısı kullanır. Bu animatör, soyut çizimi genişleten bir nesne RecyclerView.ItemAnimator. sınıfını kullanır. Varsayılan olarak, RecyclerView DefaultItemAnimator animasyon sağlar. Özel animasyonlar sağlamak isterseniz kendi animatör nesnenizi tanımlamak için RecyclerView.ItemAnimator

Liste öğesi seçimini etkinleştir

recyclerview-selection kitaplığı, kullanıcıların dokunmatik veya fare girişini kullanarak RecyclerView listesindeki öğeleri seçmesine olanak tanır. Bu sayede, seçili bir öğenin görsel sunumu üzerinde kontrol sahibi olabilirsiniz. Seçimi denetleyen politikalar üzerinde kontrol sahibi de olabilirsiniz hangi öğelerin seçilmeye uygun olduğu ve kaç öğenin seçili olmalıdır.

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ün kullanılacağını belirleyin, ardından bir anahtar ItemKeyProvider.

    Seçilen öğ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 bölümüne bakın.

  2. ItemDetailsLookup'ü uygulayın.
  3. ItemDetailsLookup, seçim kitaplığının bir MotionEvent verildiğinde RecyclerView öğeleriyle ilgili bilgilere erişmesine olanak tanır. Bu şekilde verimli bir şekilde ItemDetails yedeklenen veya oluşturulan bir veri deposundan RecyclerView.ViewHolder kullanır.

  4. RecyclerView içindeki View öğelerini, kullanıcının bunları seçip seçmediğini yansıtacak şekilde güncelleyin.

    Seçim kitaplığı, öğe seçildi. Bu bilgileri, onBindViewHolder() Aşağıdaki yaklaşımı kullanmanızı öneririz:

    • onBindViewHolder() içinde şu numarayı arayın: setActivated() - değil setSelected() - açık View nesnesi Öğenin olup olmadığına bağlı olarak true veya false seçili olduğundan emin olun.
    • Görünümün stilini, etkin durumunu gösterecek şekilde güncelleyin. Biz şunu kullanmanızı öneririz: renk durumu liste kaynağı ekleyin.
  5. ActionMode hesabını kullan kullanıcıya seçimle ilgili bir işlem yapması için araçlar sağlamak üzere.
  6. Bir SelectionTracker.SelectionObserver. bilgilendirileceksiniz. Bir seçim ilk oluşturulduğunda, bu seçimi kullanıcıya sunmak ve seçime özgü işlemler sağlamak için ActionMode'ü başlatın. Örneğin, Temizlemek için ActionMode çubuğunu kullanın ve çubuktaki geri okunu bağlayın seçim. Seçim boş hale geldiğinde (kullanıcı, son seçim zamanı: işlem modunu sonlandırın.

  7. Yorumlanmış ikincil işlemleri gerçekleştirme.
  8. Etkinlik işleme ardışık düzeninin sonunda kitaplık, Kullanıcının bir öğeyi dokunarak etkinleştirmeye çalıştığını veya öğe veya seçili öğeler kümesi sürüklemeye çalışıyor. 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ğin, uygulamanız aynı RecyclerView.Adapter ilk kullanıma hazırlamak için (RecyclerView) SelectionTracker.Builder. Bu nedenle, SelectionTracker örneği, şunu ekleyin: RecyclerView.Adapter. Aksi takdirde, onBindViewHolder() yönteminden bir öğenin seçili durumunu 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, sırasıyla etkinlik onSaveInstanceState() ve onRestoreInstanceState() yöntemlerini kullanarak seçim izleyicinin onSaveInstanceState() ve onRestoreInstanceState() yöntemlerini çağırması gerekir. Uygulamanız ayrıca SelectionTracker.Builder oluşturucu. Bu kimlik gereklidir çünkü bir etkinlik veya parçanın birden fazla ayrı, seçilebilir listesi olabilir, ve bunların hepsinin kayıtlı durumunda kalması gerekir.

Ek kaynaklar

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