如何通过Map<String, Object>从Firebase获取复选框上传的数据
实现方案
1. 获取TextView实例
先在代码中绑定要显示状态的TextView:
TextView approvalStatusTv = findViewById(R.id.your_textview_id);
(替换your_textview_id为你布局文件中对应的TextView ID)
2. 解析Firebase返回的Map数据
拿到Map<String, Object> map后,通过判断键的存在性区分审批状态,再将对应值设置到TextView:
if (map != null) { String statusContent = ""; // 判断是否为批准状态 if (map.containsKey("qDepartmentHeadApproval")) { statusContent = (String) map.get("qDepartmentHeadApproval"); } // 判断是否为拒绝状态 else if (map.containsKey("rDepartmentHeadApproval")) { statusContent = (String) map.get("rDepartmentHeadApproval"); } // 更新TextView内容 approvalStatusTv.setText(statusContent); } else { // 数据为空时显示默认提示 approvalStatusTv.setText("暂无审批记录"); }
3. 完整结合Firebase监听的代码示例
如果是在Firebase的ValueEventListener中处理,完整代码如下:
// 替换为你的Firebase节点路径 DatabaseReference approvalRef = FirebaseDatabase.getInstance().getReference("approval_records/your_record_id"); approvalRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { TextView approvalStatusTv = findViewById(R.id.your_textview_id); Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue(); if (map != null) { String statusText = ""; if (map.containsKey("qDepartmentHeadApproval")) { statusText = (String) map.get("qDepartmentHeadApproval"); } else if (map.containsKey("rDepartmentHeadApproval")) { statusText = (String) map.get("rDepartmentHeadApproval"); } approvalStatusTv.setText(statusText); } else { approvalStatusTv.setText("暂无审批状态"); } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { TextView approvalStatusTv = findViewById(R.id.your_textview_id); approvalStatusTv.setText("读取审批状态失败"); } });
注意事项
- 确保
qDepartmentHeadApproval和rDepartmentHeadApproval的键名和上传时完全一致,大小写敏感 - 类型转换时要确保Firebase存储的是字符串类型,避免类型转换异常
- 可以根据需求自定义空数据或读取失败时的提示文本
内容的提问来源于stack exchange,提问作者Ahmed
相关产品推荐
相关产品推荐

