Dinamik listeyi özelleştirme Android Jetpack'in bir parçasıdır.
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. BirLinearLayoutManager
ileRecyclerView
, gibi işlevleri kullanarakListView
kullanır.GridLayoutManager
: iki boyutlu bir ızgarada (ör. bir düzlemdeki kareler) dama tahtası.RecyclerView
kullanarakGridLayoutManager
, 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:
- 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:
Parcelable
. ve alt sınıfları daUri
String
Long
Seçim anahtarı türleri hakkında ayrıntılı bilgi için
SelectionTracker.Builder
bölümüne bakın. ItemDetailsLookup
'ü uygulayın.RecyclerView
içindekiView
öğ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ğilsetSelected()
- açıkView
nesnesi Öğenin olup olmadığına bağlı olaraktrue
veyafalse
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.
ActionMode
hesabını kullan kullanıcıya seçimle ilgili bir işlem yapması için araçlar sağlamak üzere.- Yorumlanmış ikincil işlemleri gerçekleştirme.
SelectionTracker.Builder
ile her şeyi bir araya getirin.- Seçimi etkinlik yaşam döngüsü etkinliklerine dahil edin.
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.
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.
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.
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.
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.
- Yayçiçeği
demo uygulaması:
RecyclerView
. - Kaydırılabilir bir liste görüntülemek için RecyclerView'i kullanma codelab'i.
- Android Kotlin Fundamentals: RecyclerView ile ilgili temel bilgiler codelab'ine göz atın.