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

"Oluştur" 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.

Özelleştirilebilir RecyclerView. karşılayabileceksiniz. 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. İçinde çoğu durumda, görünümü yalnızca her görünüm sahibi için tasarlamanız ve kullanarak bu görünümleri uygun verilerle güncelleyebilirsiniz. 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, kişiyi konumlandırmak için bir düzen yöneticisi kullanır artık kullanılmayan öğe görünümlerinin ne zaman yeniden kullanılacağını belirlemek için kullanıcıya görünür olduğundan emin olun. Bir görünümü veya düzeni yeniden kullanmak veya geri dönüştürmek için yönetici, adaptörden görünümün içeriğini bir farklı bir öğe oluşturur. Bu şekilde geri dönüşüm görünümleri veya performans artışı sağlayarak gereksiz görüntülemeler oluşturmamasını pahalı findViewById(). bir aramadır. Android Destek Kitaplığı üç standart düzen yöneticisi içerir. Bu yapılandırmaların çoğu, birçok özelleştirme seçeneği sunar:

  • 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: her bir sütun biraz uzaklığa sahip olacak şekilde öğeleri iki boyutlu bir ızgarada düzenler örneğin Amerikan bayrağındaki yıldızlar gibi.

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, bir animatör kullanır simgesini tıklayın. 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

İlgili içeriği oluşturmak için kullanılan recyclerview-selection kitaplık, kullanıcıların dokunma işlemini kullanarak RecyclerView listesindeki öğeleri seçmesine olanak tanır veya fare girişi kullanılabilir. Bu sayede, bir sayfanın görsel sunumu üzerinde kontrol sahibi olmaya öğe seçildi. 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 şu adımları uygulayın: şu 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 tuşu türleri hakkında ayrıntılı bilgi için bkz. SelectionTracker.Builder

  2. Uygulama ItemDetailsLookup
  3. ItemDetailsLookup, seçim kitaplığının erişmesine izin verir RecyclerView öğeyle ilgili bilgi verilen MotionEvent. Bu şekilde verimli bir şekilde ItemDetails yedeklenen veya oluşturulan bir veri deposundan RecyclerView.ViewHolder kullanır.

  4. Öğeyi güncelle View nesne kullanıcının seçimlerini veya tercihlerini belirtmek için RecyclerView bunların seçimini kaldırır.

    Seçim kitaplığı, şu öğe için varsayılan bir görsel dekorasyon sağlamaz: öğe seçildi. Projeniz sırasında 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 listesi 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, bunu kullanıcıya göstermek ve sağlamak için ActionMode işlemini başlat seçime özgü işlemlerdir. Ö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ı, seçimin son zamanını girin. İşlem modunu sonlandırın.

  7. Yorumlanan ikincil işlemleri gerçekleştirin.
  8. Etkinlik işleme ardışık düzeninin sonunda kitaplık, kullanıcının bir öğeyi dokunarak etkinleştirmeye çalıştığını veya bir öğe veya seçili öğeler kümesi sürüklemeye çalışıyor. Bunlara tepki ver uygun dinleyiciyi kaydederek yorumlarsınız. Daha fazla bkz. SelectionTracker.Builder

  9. Tüm parçaları SelectionTracker.Builder ile birleştirin.
  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, öğelerin onBindViewHolder() yönteminden seçilen durum.

  11. Seçimi etkinlik yaşam döngüsü olayları için geçerlidir.
  12. Uygulama yaşam döngüsü etkinlikleri boyunca seçim durumunu korumak için uygulamanız seçim izleyicinin onSaveInstanceState(). ve onRestoreInstanceState() etkinlik yöntemlerinden yararlanarak onSaveInstanceState() ve onRestoreInstanceState() yöntemlerine bakalım. 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.