From 091705b3f22a15d379579805685ccbf5f1625f0a Mon Sep 17 00:00:00 2001 From: tarsin Date: Mon, 23 Jan 2023 10:27:02 +0800 Subject: [PATCH] History Screen lazy items --- app/build.gradle | 1 + .../ui/scene/history/HistoryScreen.kt | 29 +++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 33a1df0dc..1a2fc61f3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -125,6 +125,7 @@ dependencies { // https://developer.android.com/jetpack/androidx/releases/paging implementation "androidx.paging:paging-runtime-ktx:3.2.0-alpha03" + implementation "androidx.paging:paging-compose:1.0.0-alpha17" implementation 'androidx.preference:preference-ktx:1.2.0' implementation 'androidx.recyclerview:recyclerview:1.3.0-rc01' diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/history/HistoryScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/history/HistoryScreen.kt index 48040669b..5ce57cf94 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/history/HistoryScreen.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/history/HistoryScreen.kt @@ -11,14 +11,30 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.paging.Pager +import androidx.paging.PagingConfig +import androidx.paging.cachedIn +import androidx.paging.compose.collectAsLazyPagingItems +import androidx.paging.compose.items +import com.hippo.ehviewer.EhDB import com.hippo.ehviewer.R @OptIn(ExperimentalMaterial3Api::class) @Composable fun HistoryScreen(toggleDrawer: () -> Unit) { + val coroutineScope = rememberCoroutineScope() + val historyData = remember { + Pager( + PagingConfig(20) + ) { + EhDB.getHistoryLazyList() + }.flow.cachedIn(coroutineScope) + }.collectAsLazyPagingItems() Scaffold( topBar = { TopAppBar( @@ -40,11 +56,18 @@ fun HistoryScreen(toggleDrawer: () -> Unit) { } ) } - ) { + ) { paddingValues -> LazyColumn( - Modifier.padding(it) + Modifier.padding(paddingValues) ) { - + items( + items = historyData, + key = { item -> item.gid } + ) { + it?.let { + Text(text = it.title!!) + } + } } } }