RecyclerView
, büyük veri kümelerini verimli bir şekilde görüntülemeyi kolaylaştıran bir Görüntüleme bileşenidir. Veri kümesindeki her öğe için görünüm oluşturmak yerine,
RecyclerView
,
bu öğelere göz atıp geri dönüşüme gönderebilirsiniz.
Oluşturma'da aynı işlemi gerçekleştirmek için Geç listeleri'ni kullanabilirsiniz. Bu sayfada, RecyclerView
uygulamanızı Compose'da yavaş listeleri kullanmak üzere nasıl taşıyacağınız açıklanmaktadır.
Taşıma adımları
RecyclerView
uygulamanızı Compose'a taşımak için aşağıdaki adımları izleyin:
RecyclerView
öğesini kullanıcı arayüzü hiyerarşinize yorumlayın veya kaldırın ve bir Hiyerarşide henüz herhangi bir değer yoksa bunu değiştirmek içinComposeView
. Bu, ekleyeceğiniz Lazy listesinin kapsayıcısıdır:<FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <!-- <androidx.recyclerview.widget.RecyclerView--> <!-- android:id="@+id/recycler_view"--> <!-- android:layout_width="match_parent"--> <!-- android:layout_height="match_parent />"--> <androidx.compose.ui.platform.ComposeView android:id="@+id/compose_view" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout>
Anahtar kelimelere göre ihtiyacınız olan tembel liste composable'ın türünü
RecyclerView
öğesinin düzen yöneticisi (aşağıdaki tabloya bakın). Seçtiğiniz composable öğesini,ComposeView
önceki adım.LayoutManager
Oluşturulabilir
LinearLayoutManager
LazyColumn
veyaLazyRow
GridLayoutManager
LazyVerticalGrid
veyaLazyHorizontalGrid
StaggeredGridLayoutManager
LazyVerticalStaggeredGrid
veyaLazyHorizontalStaggeredGrid
// recyclerView.layoutManager = LinearLayoutManager(context) composeView.setContent { LazyColumn(Modifier.fillMaxSize()) { // We use a LazyColumn since the layout manager of the RecyclerView is a vertical LinearLayoutManager } }
RecyclerView.Adapter
uygulaması. Her görünüm türü genellikle birViewHolder
alt sınıfıyla eşlenir ancak bu her zaman geçerli olmayabilir. Bu composable'lar, farklı içerik türlerinin kullanıcı arayüzü temsili olarak öğe seçin:@Composable fun ListItem(data: MyData, modifier: Modifier = Modifier) { Row(modifier.fillMaxWidth()) { Text(text = data.name) // … other composables required for displaying `data` } }
RecyclerView.Adapter
cihazınızınonCreateViewHolder()
veonBindViewHolder()
yöntemleri bu composable'larla değiştirilecek ve sağlayacağınız konusunda da bilgi edinin. Oluşturma sayfasında, bir öğe için composable oluşturup verileri buna bağlama. Bu kavramlar, birleşti.Tembel listenin
content
yuvasında (son lambda parametresi), listenizin verilerini iterlemek içinitems()
işlevini (veya eşdeğer bir aşırı yüklemeyi) kullanın.itemContent
lambda dosyasında uygun verileriniz için derlenebilir öğe:val data = listOf<MyData>(/* ... */) composeView.setContent { LazyColumn(Modifier.fillMaxSize()) { items(data) { ListItem(it) } } }
Yaygın kullanım alanları
Öğe süslemeleri
RecyclerView
, bir ItemDecoration
kavramına sahiptir ve bir
özel çizimi seçin. Örneğin, öğeler arasına bölücü eklemek için ItemDecoration
ekleyebilirsiniz:
val itemDecoration = DividerItemDecoration(recyclerView.context, LinearLayoutManager.VERTICAL) recyclerView.addItemDecoration(itemDecoration)
Oluşturma işleminde eşdeğer bir öğe süsleme kavramı yok. Bunun yerine
listesindeki herhangi bir kullanıcı arayüzü süslemesini doğrudan besteye ekleyebilir. Örneğin,
listeye ayırıcılar eklemek için, her bir ayırıcıdan sonra Divider
composable'ı kullanabilirsiniz.
öğe:
LazyColumn(Modifier.fillMaxSize()) { itemsIndexed(data) { index, d -> ListItem(d) if (index != data.size - 1) { HorizontalDivider() } } }
Öğe animasyonları
Görünümün animasyonunu yapmak için RecyclerView
üzerinde bir ItemAnimator
ayarlanabilir
bağdaştırıcıda değişiklik yapıldıkça öğelere eklenir. Varsayılan olarak RecyclerView
, kaldırma, ekleme ve taşıma etkinliklerinde temel animasyonlar sağlayan DefaultItemAnimator
'yi kullanır.
Tembel listeler, animateItemPlacement
değiştiricisi aracılığıyla benzer bir kavrama sahiptir.
Daha fazla bilgi edinmek için Öğe animasyonları bölümüne bakın.
Ek kaynaklar
RecyclerView
öğesini Compose'a taşıma hakkında daha fazla bilgi için
şu kaynakları inceleyin:
- Listeler ve Izgaralar: Listelerin ve ızgaraların Oluştur'u tıklayın.
- Jetpack Compose Interop: Compose'u RecyclerView'da kullanma:
Compose'u
RecyclerView
ile verimli şekilde kullanmayı anlatan blog yayını.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Listeler ve ızgaralar
CoordinatorLayout
e-posta adresini Compose'a taşı- Dikkat edilmesi gereken diğer noktalar