Compose () - 使用Paging

点击跳转 普通使用方式

@Composable
fun Screen(flow: Flow<PagingData<HotNewestArticleBean.HotNewestArticle.Article>>) {
    val data = flow.collectAsLazyPagingItems()
    var showProgressBar by remember{ mutableStateOf(true) }
    var showList by remember{ mutableStateOf(false) }
    //监听paging状态,控制列表和进度条显示
    when (data.loadState.refresh) {
        //正在加载
        is LoadState.Loading -> {
            showProgressBar = true
            showList = false
        }
        //当没有加载动作并且没有错误的时候
        is LoadState.NotLoading -> {
            showProgressBar = false
            showList = true
        }
        //加载错误
        is LoadState.Error -> {
            showProgressBar = false
            val error = (data.loadState.refresh as LoadState.Error).error
            Log.e("Paging错误","${error.message}")
        }
    }
    //列表
    if (showList) {
        LazyColumn{
            items(data){ item ->
                item?.let {
                    Item(data = it)
                }
            }
        }
    }
    //进度条
    if (showProgressBar){ CircularProgressIndicator() }
}

@Composable
fun Item(
    modifier: Modifier = Modifier,
    data: HotNewestArticleBean.HotNewestArticle.Article
) {
    val author = data.author
    val shareUser = data.shareUser
    val superChapterName = data.superChapterName
    val userName = if (author.isEmpty()) {
        String.format("%s · %s", superChapterName, shareUser)
    } else {
        String.format("%s · %s", superChapterName, author)
    }
    Box {
        Column(
            modifier = modifier
                .padding(3.dp)
                .border(BorderStroke(width = 2.dp, color = Color(0xFF777777)))
                .padding(3.dp)
                .fillMaxWidth()
        ) {
            Text(text =  Html.fromHtml(data.title).toString(), fontSize = (20.sp))
            Text(text = userName)
            Text(text = data.niceDate)
        }
    }
}

猜你喜欢

转载自blog.csdn.net/HugMua/article/details/130354886