You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中如何通过Retrofit API接收数组并提取Badge布尔数据

在Android中通过Retrofit提取数组数据并整合为布尔对象

前提说明

假设你的SingleResult类包含一个数组/列表类型的字段(如List<Boolean> badges或boolean[] badges),用于存储badge1至badge6的状态数据;如果是单独的属性(如badge1、badge2),可直接对应提取。

步骤1:定义整合结果的布尔对象类

先创建一个类来统一存储6个badge的状态:

public class BadgeStatus {
    private boolean badge1;
    private boolean badge2;
    private boolean badge3;
    private boolean badge4;
    private boolean badge5;
    private boolean badge6;

    // 构造方法
    public BadgeStatus(boolean badge1, boolean badge2, boolean badge3, boolean badge4, boolean badge5, boolean badge6) {
        this.badge1 = badge1;
        this.badge2 = badge2;
        this.badge3 = badge3;
        this.badge4 = badge4;
        this.badge5 = badge5;
        this.badge6 = badge6;
    }

    // 按需添加getter方法
    public boolean isBadge1() { return badge1; }
    public boolean isBadge2() { return badge2; }
    // ... 其他badge的getter可按需补充
}

步骤2:在Retrofit回调中提取并整合数据

在你提供的代码注释//here位置,添加数据提取与整合逻辑:

profileAPI.getBadge().enqueue(new Callback<SingleResult>() {
    @Override
    public void onResponse(Call<SingleResult> call, Response<SingleResult> response) {
        if(response.isSuccessful() && response.body() != null) {
            SingleResult data = response.body();
            // 从SingleResult中获取badges数组/列表
            List<Boolean> badges = data.getBadges();
            // 若为数组则用:boolean[] badges = data.getBadges();

            // 校验数据完整性,避免索引越界
            if (badges != null && badges.size() >= 6) {
                // 提取badge1到badge6(注意索引从0开始,对应列表的0-5位)
                boolean badge1 = badges.get(0);
                boolean badge2 = badges.get(1);
                boolean badge3 = badges.get(2);
                boolean badge4 = badges.get(3);
                boolean badge5 = badges.get(4);
                boolean badge6 = badges.get(5);

                // 整合到布尔对象中
                BadgeStatus badgeStatus = new BadgeStatus(badge1, badge2, badge3, badge4, badge5, badge6);

                // 后续可使用badgeStatus操作各badge状态,例如:
                // if(badgeStatus.isBadge1()) { /* 处理badge1激活逻辑 */ }
            } else {
                // 处理数据长度不足的异常情况
            }
        }
    }

    @Override
    public void onFailure(Call<SingleResult> call, Throwable t) {
        // 处理请求失败逻辑
        t.printStackTrace();
    }
});

特殊情况处理

如果SingleResult中是单独的属性而非数组(如提供isBadge1()、isBadge2()等方法),直接调用方法取值即可:

// 替换上述提取逻辑
boolean badge1 = data.isBadge1();
boolean badge2 = data.isBadge2();
boolean badge3 = data.isBadge3();
boolean badge4 = data.isBadge4();
boolean badge5 = data.isBadge5();
boolean badge6 = data.isBadge6();

BadgeStatus badgeStatus = new BadgeStatus(badge1, badge2, badge3, badge4, badge5, badge6);

内容的提问来源于stack exchange,提问作者Stupid_Student

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 00:50:20