# Implementation Plan - [x] 1. 修改布局文件添加"热门"Tab - [x] 1.1 在activity_main.xml的categoryTabs中添加"热门"TabItem,放在最左侧 - 在categoryTabs的第一个位置添加TabItem,文本为"热门" - 确保"热门"Tab在"推荐"Tab之前 - _Requirements: 1.1, 1.2, 1.4_ - [x] 1.2 在item_works.xml中添加热门标识ImageView - 添加id为hotBadge的ImageView - 设置火焰图标(ic_fire_24) - 设置橙红色tint(#FF4500) - 默认visibility为gone - _Requirements: 3.1_ - [x] 2. 修改WorksResponse数据模型 - [x] 2.1 在WorksResponse类中添加isHot和hotTime字段 - 添加Boolean类型的isHot字段 - 添加String类型的hotTime字段 - 添加对应的getter和setter方法 - _Requirements: 2.2, 3.1_ - [x] 3. 修改WorksAdapter显示热门标识 - [x] 3.1 在WorksViewHolder的bind方法中添加热门标识显示逻辑 - 获取hotBadge视图 - 根据works.getIsHot()判断是否显示 - isHot为true时设置visibility为VISIBLE - isHot为false或null时设置visibility为GONE - _Requirements: 3.1_ - [ ]* 3.2 编写Property测试:热门作品显示热门标识 - **Property 2: 热门作品显示热门标识** - **Validates: Requirements 3.1** - [x] 4. 在MainActivity中添加热门作品数据管理 - [x] 4.1 添加热门作品相关成员变量 - 添加hotWorks列表(List) - 添加currentHotWorksPage(int,初始值1) - 添加isLoadingHotWorks(boolean,初始值false) - 添加hasMoreHotWorks(boolean,初始值true) - _Requirements: 2.1, 5.1_ - [x] 4.2 实现loadHotWorks方法 - 检查isLoadingHotWorks,避免重复请求 - 调用ApiService.getHotWorks(page, 20) - 处理成功响应:更新hotWorks列表,更新hasMoreHotWorks标志 - 处理失败响应:显示错误提示 - 更新isLoadingHotWorks状态 - _Requirements: 2.1, 2.2, 2.4, 2.5_ - [x] 4.3 实现refreshHotWorks方法 - 重置currentHotWorksPage为1 - 重置hasMoreHotWorks为true - 调用loadHotWorks(1) - _Requirements: 4.1, 4.3_ - [x] 4.4 实现loadMoreHotWorks方法 - 检查isLoadingHotWorks和hasMoreHotWorks - 增加currentHotWorksPage - 调用loadHotWorks(currentHotWorksPage) - _Requirements: 5.1, 5.3_ - [x] 4.5 实现updateHotWorksUI方法 - 检查hotWorks是否为空 - 为空时显示空状态视图 - 不为空时转换为FeedItem列表并更新adapter - _Requirements: 2.2, 2.6_ - [ ]* 4.6 编写Property测试:热门Tab仅显示作品内容 - **Property 1: 热门Tab仅显示作品内容** - **Validates: Requirements 2.3** - [x] 5. 修改categoryTabs的Tab选择监听器 - [x] 5.1 修改onTabSelected方法处理"热门"Tab - 获取选中Tab的文本 - 判断是否为"热门" - 如果是"热门",调用refreshHotWorks() - 如果是其他分类,调用applyCategoryFilterWithAnimation() - _Requirements: 1.3, 2.1, 4.1_ - [x] 5.2 修改onTabReselected方法处理"热门"Tab - 判断是否为"热门" - 如果是"热门",调用refreshHotWorks()刷新数据 - _Requirements: 4.1_ - [x] 6. 修改下拉刷新逻辑 - [x] 6.1 在SwipeRefreshLayout的OnRefreshListener中添加"热门"Tab判断 - 检查currentCategory是否为"热门" - 如果是"热门",调用refreshHotWorks() - 如果不是,调用fetchDiscoverRooms() - _Requirements: 4.1, 4.2, 4.3_ - [x] 7. 修改滚动加载更多逻辑 - [x] 7.1 在RecyclerView的OnScrollListener中添加"热门"Tab判断 - 检查是否滚动到底部(lastVisible >= total - 4) - 检查currentCategory是否为"热门" - 如果是"热门",调用loadMoreHotWorks() - _Requirements: 5.1, 5.2_ - [-] 8. 实现Tab切换时的状态保存和恢复 - [x] 8.1 添加Tab切换时间记录 - 添加lastHotTabLeaveTime成员变量(long) - 在切换离开"热门"Tab时记录当前时间 - _Requirements: 6.1, 6.3_ - [ ] 8.2 实现返回"热门"Tab时的状态恢复 - 检查是否有已加载的数据 - 如果有数据且停留时间小于5分钟,恢复数据和滚动位置 - 如果停留时间超过5分钟,调用refreshHotWorks() - _Requirements: 6.2, 6.3_ - [x] 9. 添加错误处理和空状态显示 - [x] 9.1 实现showErrorState方法 - 显示错误提示视图 - 提供重试按钮 - 重试按钮点击时调用refreshHotWorks() - _Requirements: 2.5, 4.4, 5.4_ - [x] 9.2 实现showEmptyState方法 - 显示空状态视图 - 显示"暂无热门作品"文本 - 提供刷新按钮 - _Requirements: 2.6_ - [x] 10. 设置默认选中"热门"Tab - [x] 10.1 在showDiscoverTab方法中设置默认选中 - 在categoryTabs初始化完成后 - 获取索引为0的Tab("热门"Tab) - 调用tab.select()选中该Tab - 触发loadHotWorks加载数据 - _Requirements: 1.3_ - [ ]* 11. 编写单元测试 - [ ]* 11.1 测试"热门"Tab位置和顺序 - 测试categoryTabs包含6个Tab - 测试"热门"Tab在索引0位置 - 测试"推荐"Tab在索引1位置 - _Requirements: 1.1, 1.2, 1.4_ - [ ]* 11.2 测试热门作品加载逻辑 - 测试loadHotWorks调用正确的API - 测试refreshHotWorks重置页码 - 测试loadMoreHotWorks增加页码 - 测试空数据显示空状态 - 测试错误显示错误提示 - _Requirements: 2.1, 2.4, 2.5, 2.6, 4.1, 5.1_ - [ ]* 11.3 测试WorksAdapter热门标识显示 - 测试isHot=true时hotBadge可见 - 测试isHot=false时hotBadge不可见 - _Requirements: 3.1_ - [ ]* 11.4 测试下拉刷新和加载更多 - 测试下拉刷新触发refreshHotWorks - 测试滚动到底部触发loadMoreHotWorks - 测试刷新动画显示和隐藏 - _Requirements: 4.1, 4.2, 4.3, 5.1, 5.2_ - [ ]* 11.5 测试Tab切换状态保存 - 测试切换Tab后数据保留 - 测试返回Tab后数据恢复 - 测试超过5分钟自动刷新 - _Requirements: 6.1, 6.2, 6.3_ - [ ] 12. Checkpoint - 确保所有测试通过 - Ensure all tests pass, ask the user if questions arise.