Android JetPack架构组件介绍(二)

本文深入探讨Android JetPack中的Paging组件和Navigation框架。Paging组件用于实现RecyclerView的分页加载,避免内存消耗,提供无缝用户体验。而Navigation组件简化了界面间的导航,通过资源文件定义所有导航目标,支持单Activity+Fragment模式,提升开发效率。文中通过使用步骤、Demo演示和实现原理进行了详细介绍。
摘要由CSDN通过智能技术生成

前面已经介绍了Room、WorkManager、Lifecycle、ViewModel和LiveData这些架构组件,接下来介绍Paging分页组件和Navigation导航框架,这两个类库在应用开发过程中也是非常常见的。

Paging组件

Android应用中列表是一种很常见的展现形式,多条数据展示就会使用多个界面元素,如果大量的数据一次性全部加入应用中会导致内存极度消耗,而且用户也很难一次性完全浏览一遍,列表数据通常都是通过分页加载的形式展现。JetPack内部包含了支持RecyclerView分页功能的Paging组件,只需要设置数据获取来源和每页数量,组件在用户浏览列表是会自动计算下一页要请求的数据并发送请求。

使用步骤

  1. 导入框架
implementation "android.arch.paging:runtime:$rootProject.paging_version“
  1. 编写数据库
@Query("select * from tb_movie")
DataSource.Factory<Integer, MovieEntity> getAllMovies();
  1. 编写列表界面
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter = new PagedMovieAdapter());
  1. 生成LivedPagedList对象
pagedList = new LivePagedListBuilder<>(repository.getAllMovies(), new PagedList.Config.Builder()
                .setPageSize(10).setPrefetchDistance(2).setInitialLoadSizeHint(20).build()).build();
pagedList.observe(this, new Observer<PagedList<MovieEntity>>() {
	public void onChanged(@Nullable PagedList<MovieEntity> movieEntities) {
                	adapter.submitList(movieEntities);
      	 }});

Demo演示

前面通过Room生成MovieEntity对象的数据库表并且定义获取所有电影数据的接口,需要注意返回的对象类型是DataSource.Factory类型,之后就按照使用步骤中的实现方式将PagedList提交到PagedAdapter中。
在这里插入图片描述

实现原理

在这里插入图片描述
从前面的De

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值