فهرست مطالب
کتابخانه Paging 3 یک کتابخانه ارائه شده توسط Android Jetpack است که به منظور ایجاد لیستها با حجم بزرگ اطلاعات در برنامههای Android و مدیریت بارگذاری دینامیک اطلاعات طراحی شده است. این کتابخانه امکانات زیادی برای مدیریت و نمایش دادهها در صفحات مختلف را ارائه میدهد.
برای استفاده از Paging 3 در کاتلین، مراحل زیر را دنبال کنید:
افزودن وابستگی: ابتدا، به فایل build.gradle ماژول شما این خطوط را اضافه کنید:
implementation "androidx.paging:paging-runtime-ktx:3.1.0"
این وابستگی اجازه میدهد تا از امکانات Paging 3 در پروژهی شما استفاده کنید.
تعریف DataSource: برای استفاده از Paging 3، شما نیاز به تعریف یک PagingSource دارید که مسئول برگرداندن اطلاعات بر اساس صفحات باشد.
مثال:
import androidx.paging.PagingSource
import androidx.paging.PagingState
class MyPagingSource : PagingSource<Int, MyData>() {
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, MyData> {
try {
val nextPageNumber = params.key ?: 1
val response = // ارتباط با منبع داده (API، دیتابیس، ...)
return LoadResult.Page(
data = response.data,
prevKey = if (nextPageNumber == 1) null else nextPageNumber - 1,
nextKey = if (response.data.isEmpty()) null else nextPageNumber + 1
)
} catch (e: Exception) {
return LoadResult.Error(e)
}
}
override fun getRefreshKey(state: PagingState<Int, MyData>): Int? {
return state.anchorPosition
}
}
تنظیم ViewModel:
در ViewModel خود، از Pager و PagingConfig برای تنظیم PagingData استفاده کنید:
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.paging.Pager
import androidx.paging.PagingConfig
import androidx.paging.cachedIn
class MyViewModel : ViewModel() {
val myPagingData = Pager(PagingConfig(pageSize = 20)) {
MyPagingSource()
}.flow.cachedIn(viewModelScope)
}
استفاده در Compose:
در Compose، میتوانید از PagingDataAdapter برای نمایش دادهها در یک لیست استفاده کنید:
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import androidx.paging.compose.collectAsLazyPagingItems
import androidx.paging.compose.items
@Composable
fun MyPagingList(viewModel: MyViewModel) {
val myPagingData = viewModel.myPagingData.collectAsLazyPagingItems()
Surface(color = MaterialTheme.colorScheme.background) {
LazyColumn {
items(myPagingData) { item ->
// نمایش هر مورد
}
}
}
}
@Preview(showBackground = true)
@Composable
fun PreviewMyPagingList() {
MyPagingList(MyViewModel())
}
نظرات
دیدگاهی برای این مطلب ثبت نشده است.