Ân *_*ọng 5 java kotlin android-livedata android-jetpack-compose lazycolumn
我刚刚学习了jetpack compose,并且从回收栏切换到了惰性栏,但是当我这样做时,它比回收栏滞后得多
向应用程序添加大约 100 个项目后,应用程序出现滞后,有什么方法可以减少惰性列的滞后?我已经设置了该项目的 id 并使用 R8 来构建这是代码: https: //github.com/trongan123/TODOAPP
val tabs: MutableList<TabItem> = ArrayList<TabItem>().toMutableList()
tabs += TabItem("All") {
AllItemScreen(
listAll, openUpdateItemScreen = {
openUpdateItemScreen()
}, viewModel = viewModel
)
}
tabs += TabItem("Pending") {
PendingItemScreen(listAll.filter { it.status.equals("pending") }, openUpdateItemScreen = {
openUpdateItemScreen()
}, viewModel = viewModel)
}
tabs += TabItem("Completed") {
CompletedItemScreen(
listAll.filter { it.status.equals("completed") },
openUpdateItemScreen = {
openUpdateItemScreen()
}, viewModel = viewModel
)
}
val pagerState = rememberPagerState()
Scaffold(
floatingActionButton = {
FloatingActionButton(
onClick = { openAddItemScreen() }
) {
Icon(Icons.Filled.Add, "")
}
}
) { padding ->
val textState = remember { mutableStateOf(TextFieldValue("")) }
Column(
modifier = Modifier
.padding(padding)
) {
SearchView(state = textState, viewModel)
Spacer(modifier = Modifier.size(16.dp))
Tabs(
tabs = tabs, pagerState = pagerState,
viewModel = viewModel
)
TabsContent(tabs = tabs, pagerState = pagerState)
}
}
Run Code Online (Sandbox Code Playgroud)
所有项目屏幕
Column(
modifier = Modifier
.fillMaxSize()
) {
LazyColumn() {
items(listAll) { i ->
ItemList(
i,
openUpdateItemScreen = {
openUpdateItemScreen()
}, viewModel
)
}
}
}
Run Code Online (Sandbox Code Playgroud)
项目列表
val isChecked = remember { mutableStateOf(false) }
Card(
modifier = Modifier
.fillMaxWidth()
.padding(5.dp)
.clickable {
if (isChecked.value == true) {
isChecked.value = false
viewModel.setClearAll(i.id, false)
viewModel.setCheckData(i.id, false)
} else {
isChecked.value = true
viewModel.setClearAll(i.id, true)
viewModel.setCheckData(i.id, true)
}
},
elevation = 5.dp
) {
Column(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center
) {
Spacer(modifier = Modifier.size(16.dp))
Row {
val check: List<Int>? = viewModel.getListMutableCheck().value as List<Int>
if (check != null) {
isChecked.value = check.contains(i.id)
}
Checkbox(
checked = isChecked.value,
onCheckedChange = {
isChecked.value = it
viewModel.setClearAll(i.id, it)
viewModel.setCheckData(i.id, it)
}
)
Spacer(modifier = Modifier.size(16.dp))
if (!isChecked.value) {
Text(
i.title, modifier = Modifier
.padding(top = 10.dp)
)
} else Text(
i.title,
modifier = Modifier
.padding(top = 10.dp),
style = TextStyle(textDecoration = TextDecoration.LineThrough)
)
Spacer(
Modifier
.weight(1f)
.fillMaxHeight()
)
Image(painter = painterResource(id = R.drawable.ellipsis),
contentDescription = null,
modifier = Modifier
.clickable {
todoItem = i
openUpdateItemScreen()
}
.size(30.dp))
Spacer(modifier = Modifier.size(10.dp))
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
501 次 |
| 最近记录: |