章节摘要:单屏技能学到手,该认识工业级的通用模式了。本章讲三件套:AlertDialog 与 DialogFragment 的模态决策、Toolbar 应用栏的导航与动作、RecyclerView 的列表复用机制。猜数字 App 在本章长出"战绩列表页"与"帮助页",完成从 demo 到应用的结构跳跃。
App 要变大了:除了主界面,还想要战绩历史与规则帮助。第一个问题是"临时盖在界面上的那层怎么做"——放弃对局要确认,帮助要展示,这就是对话框模式的领地;学会了 DialogFragment 的正规姿势才发现,它本质是"有自己生命周期的迷你界面"。第二个问题是"每页顶上那条栏"——返回、标题、菜单动作,Toolbar 是应用级导航的锚点。第三个问题最重:几十条战绩怎么显示——一个个 TextView 塞进 ScrollView 3.3 节就警告过不行,RecyclerView 的视图复用是答案,也是从"界面拼装"迈向"数据驱动界面"的第一步。三条线共同把"控件思维"升级为"模式思维"。
本章最大的换脑在 7.3:前六章都在"为每个控件写 XML",列表的世界观是反过来的——写一个格子模板,让数据流过它。RecyclerView 屏幕上永远只有十来个格子,滑出屏幕的格子被回收、填上新数据再从另一端进场,千条战绩的内存占用和十条几乎一样。理解"复用的是格子不是数据",也就理解了为什么 Adapter 只需回答"一共几条"和"第 i 条塞什么"。另一个落点在 7.1:DialogFragment 不是"更麻烦的 AlertDialog",而是让对话框获得生命周期与旋转重建恢复的正规容器——直接 new AlertDialog 在屏幕旋转时会凭空消失,这个坑的解药就是它。
列表引擎三件套的协作:
App 功能全部就位,最后一章交给工具链:布局编辑器与检查器提效、Logcat 读日志排错、真机与模拟器双轨验证,把"能跑"变成"能查"。
可考核条目包括:用 Builder 搭建带正负按钮的 AlertDialog、解释屏幕旋转时裸对话框消失的成因、把对话框装进 DialogFragment 并在重建后恢复、通过安全转换把结果交回宿主、配置 Toolbar 与菜单并用 when 分流动作、说明 ifRoom 与 never 的分发标准、启用返回箭头并声明逻辑父级、写出 item 布局加 ViewHolder 加 Adapter 三件套、解释 onCreateViewHolder 与 onBindViewHolder 的分工、用精确通知更新列表数据。综合自查题:不看资料,从空文件写出一个能显示五条字符串的 RecyclerView——十五分钟内写顺,本章就真正到手了。