zhibo/关注页面修复说明.md
2026-01-03 15:32:31 +08:00

4.9 KiB
Raw Blame History

关注页面修复说明

问题描述

首页的"关注"标签页不显示已关注主播的直播间,即使用户已经关注了正在直播的主播。

问题原因

原来的 showFollowTab() 方法实现有误:

  • 显示的是推荐用户列表,而不是已关注主播的直播间
  • 使用了 RecommendUserAdapter 而不是房间适配器
  • 没有调用接口获取已关注主播的直播间

修复方案

1. 修改 showFollowTab() 方法

文件: android-app/app/src/main/java/com/example/livestreaming/MainActivity.java

修改内容:

  • 移除推荐用户相关的代码
  • 使用房间列表适配器显示直播间
  • 调用新的 fetchFollowedStreamersRooms() 方法获取数据

2. 新增 fetchFollowedStreamersRooms() 方法

获取已关注主播的直播间列表:

private void fetchFollowedStreamersRooms() {
    // 1. 检查登录状态
    if (!AuthHelper.isLoggedIn(this)) {
        // 显示未登录提示
        return;
    }
    
    // 2. 获取所有直播间
    ApiClient.getService().getRooms()
        .enqueue(new Callback<ApiResponse<List<Room>>>() {
            @Override
            public void onResponse(...) {
                // 3. 获取已关注的用户列表
                ApiClient.getService().getFollowingList(1, 1000)
                    .enqueue(new Callback<...>() {
                        @Override
                        public void onResponse(...) {
                            // 4. 筛选出已关注主播的直播间
                            // 5. 更新UI显示
                        }
                    });
            }
        });
}

3. 新增空状态处理方法

showNoFollowedStreamersState():

  • 显示"还没有关注主播"的提示
  • 提供"去发现"按钮,跳转到发现页面

showNoLiveFollowedStreamersState():

  • 显示"关注的主播都不在线"的提示
  • 提供"刷新"按钮重新加载

实现逻辑

数据获取流程

1. 用户点击"关注"标签
   ↓
2. 检查登录状态
   ↓
3. 获取所有直播间列表 (GET /api/front/live/public/rooms)
   ↓
4. 获取已关注用户列表 (GET /api/front/follow/following)
   ↓
5. 筛选room.uid in followedUserIds
   ↓
6. 显示筛选后的直播间列表

空状态处理

- 未登录 → 提示"请先登录" + "去登录"按钮
- 没有关注 → 提示"还没有关注主播" + "去发现"按钮
- 都不在线 → 提示"关注的主播都不在线" + "刷新"按钮
- 网络错误 → 提示"网络错误" + "重试"按钮

使用的API接口

1. 获取直播间列表

GET /api/front/live/public/rooms

2. 获取关注列表

GET /api/front/follow/following?page=1&pageSize=1000

返回数据格式:

{
  "code": 200,
  "data": {
    "list": [
      {
        "uid": 1,
        "nickname": "主播昵称",
        "avatar": "头像URL",
        ...
      }
    ],
    "total": 10
  }
}

测试步骤

1. 未登录状态

  • 打开APP点击"关注"标签
  • 应该显示"请先登录"提示
  • 点击"去登录"按钮,跳转到登录页面

2. 已登录但未关注任何人

  • 登录后,点击"关注"标签
  • 应该显示"还没有关注主播"提示
  • 点击"去发现"按钮,跳转到发现页面

3. 已关注但主播不在线

  • 关注一些主播(但他们都没有开播)
  • 点击"关注"标签
  • 应该显示"关注的主播都不在线"提示
  • 点击"刷新"按钮重新加载

4. 已关注且主播在线

  • 关注一些正在直播的主播
  • 点击"关注"标签
  • 应该显示这些主播的直播间列表
  • 点击直播间可以进入观看

注意事项

  1. 性能优化

    • 关注列表使用较大的 pageSize (1000) 一次性获取
    • 如果用户关注数量很多,可以考虑分页加载
  2. 数据刷新

    • 下拉刷新会重新获取数据
    • 从其他页面返回时不会自动刷新,需要用户手动刷新
  3. 错误处理

    • 网络错误会显示错误提示和重试按钮
    • 接口返回错误会显示相应的空状态
  4. 用户体验

    • 首次加载显示骨架屏
    • 刷新时显示下拉刷新动画
    • 空状态提供明确的操作指引

相关文件

  • Android 主页面: android-app/app/src/main/java/com/example/livestreaming/MainActivity.java
  • API 接口定义: android-app/app/src/main/java/com/example/livestreaming/net/ApiService.java
  • 后端关注接口: Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/FollowController.java
  • 后端直播间接口: Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/LiveRoomController.java

后续优化建议

  1. 添加缓存:缓存关注列表,减少网络请求
  2. 实时更新:使用 WebSocket 实时更新主播上线状态
  3. 排序优化:优先显示正在直播的主播
  4. 推送通知:关注的主播开播时发送推送通知
  5. 快速关注:在关注页面也可以快速取消关注