RecyclerView یک کامپوننت View است که نمایش کارآمد مجموعههای بزرگ دادهها را آسان میکند. به جای ایجاد View برای هر آیتم در مجموعه دادهها، RecyclerView با نگه داشتن مجموعهای کوچک از Viewها و بازیابی آنها هنگام پیمایش در بین آن آیتمها، عملکرد برنامه شما را بهبود میبخشد.
 در Compose، میتوانید از لیستهای Lazy برای انجام همین کار استفاده کنید. این صفحه نحوهی مهاجرت پیادهسازی RecyclerView خود را برای استفاده از لیستهای Lazy در Compose شرح میدهد.
مراحل مهاجرت
 برای انتقال پیادهسازی RecyclerView به Compose، مراحل زیر را دنبال کنید:
- RecyclerViewاز سلسله مراتب رابط کاربری خود حذف یا کامنت کنید و اگر هنوز RecyclerView در سلسله مراتب وجود ندارد، یک- ComposeViewبرای جایگزینی آن اضافه کنید. این کانتینری برای لیست Lazy است که اضافه خواهید کرد:- <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>
- بر اساس مدیر طرحبندی - RecyclerViewخود (به جدول زیر مراجعه کنید) نوع فهرست Lazy مورد نیاز خود را تعیین کنید. فهرستی که انتخاب میکنید، فهرست سطح بالای- ComposeViewخواهد بود که در مرحله قبل اضافه کردهاید.- LayoutManager- قابل ترکیب - LinearLayoutManager- LazyColumnیا- LazyRow- GridLayoutManager- LazyVerticalGridیا- LazyHorizontalGrid- StaggeredGridLayoutManager- LazyVerticalStaggeredGridیا- LazyHorizontalStaggeredGrid- // 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خود، یک composable متناظر ایجاد کنید. هر نوع نما معمولاً به یک زیرکلاس- ViewHolderنگاشت میشود، هرچند ممکن است همیشه اینطور نباشد. این composableها به عنوان نمایش رابط کاربری برای انواع مختلف عناصر در لیست شما استفاده میشوند:- @Composable fun ListItem(data: MyData, modifier: Modifier = Modifier) { Row(modifier.fillMaxWidth()) { Text(text = data.name) // … other composables required for displaying `data` } } - منطق موجود در متدهای - onCreateViewHolder()و- onBindViewHolder()از- RecyclerView.Adapterشما با این composableها و حالتی که شما برای آنها فراهم میکنید جایگزین خواهد شد. در Compose، هیچ تفکیکی بین ایجاد یک composable برای یک آیتم و اتصال داده به آن وجود ندارد - این مفاهیم با هم ترکیب میشوند.
- درون جایگاه - contentلیست Lazy (پارامتر لامبدا انتهایی)، از تابع- items()(یا یک overload معادل) برای پیمایش روی دادههای لیست خود استفاده کنید. در لامبدا- itemContent، آیتم قابل ترکیب مناسب برای دادههای خود را فراخوانی کنید:- val data = listOf<MyData>(/* ... */) composeView.setContent { LazyColumn(Modifier.fillMaxSize()) { items(data) { ListItem(it) } } } 
موارد استفاده رایج
تزئینات اقلام
 RecyclerView مفهومی به نام ItemDecoration دارد که میتوانید از آن برای اضافه کردن یک طرح ویژه برای آیتمهای موجود در لیست استفاده کنید. برای مثال، میتوانید یک ItemDecoration برای اضافه کردن جداکننده بین آیتمها اضافه کنید: 
val itemDecoration = DividerItemDecoration(recyclerView.context, LinearLayoutManager.VERTICAL) recyclerView.addItemDecoration(itemDecoration)
 Compose مفهوم معادلی برای تزئینات آیتم ندارد. در عوض، میتوانید هر تزئینات رابط کاربری را در لیست مستقیماً در ترکیب اضافه کنید. به عنوان مثال، برای اضافه کردن جداکننده به لیست، میتوانید از Divider composable بعد از هر آیتم استفاده کنید: 
LazyColumn(Modifier.fillMaxSize()) { itemsIndexed(data) { index, d -> ListItem(d) if (index != data.size - 1) { HorizontalDivider() } } }
انیمیشنهای آیتم
 میتوان یک ItemAnimator روی RecyclerView تنظیم کرد تا ظاهر آیتمها را با اعمال تغییرات در آداپتور، متحرکسازی کند. به طور پیشفرض، RecyclerView از DefaultItemAnimator استفاده میکند که انیمیشنهای اولیه را در رویدادهای حذف، اضافه و جابجایی ارائه میدهد.
 لیستهای تنبل (lazy list) از طریق اصلاحکننده animateItemPlacement مفهوم مشابهی دارند. برای کسب اطلاعات بیشتر به بخش انیمیشنهای آیتم مراجعه کنید.
منابع اضافی
 برای اطلاعات بیشتر در مورد انتقال RecyclerView به Compose، به منابع زیر مراجعه کنید:
- لیستها و شبکهها : مستنداتی برای نحوه پیادهسازی لیستها و شبکهها در Compose.
-  تعامل Jetpack Compose: استفاده از Compose در RecyclerView : پست وبلاگ برای استفاده کارآمد از Compose در RecyclerView.
برای شما توصیه میشود
- توجه: متن لینک زمانی نمایش داده میشود که جاوا اسکریپت غیرفعال باشد.
- لیستها و شبکهها
-  انتقال CoordinatorLayoutبه Compose
- ملاحظات دیگر
