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
相关产品推荐
相关产品推荐

