首页 > 解决方案 > 从 fireBase 获取包含 List 的复杂对象的值

问题描述

我有包含 List 的对象,当我尝试从 firebase - 数据库中取回值时,出现错误:“com.google.firebase.database.DatabaseException:无法将 java.util.ArrayList 类型的值转换为字符串”

该对象的 setValue 没有任何问题,当前保存数据。

这是 "warrant" 对象中列表的 set&get 方法:

public class SearchLocation implements Serializable {
private List<String> custodian;

   public void setCustodian(String custodianUid) {
   if(custodian == null)
       custodian = new ArrayList<>();
   custodian.add(custodianUid);
}

public List<String> getCustodian() {
    return custodian;
}

}

这就是我试图获得淡水河谷的方式:

        DB_Service.getData(evidenceRef, new OnGetDataListener() {
        @Override
       public void onSuccess(DataSnapshot dataSnapshot) {
         searchLocations = new ArrayList<>();

          for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
               SearchLocation searchLocation = snapshot.getValue(SearchLocation.class);
                searchLocation.setUid(snapshot.getKey());
              searchLocations.add(searchLocation);
            }

在此处输入图像描述

标签: androidlistfirebasefirebase-realtime-database

解决方案


更新你的setCustodian()方法。它不应该接受List<String>String 。

所以你必须像下面这样更新

 public void setCustodian(List<String> custodian) {
      this.custodian=custodian;
 }

我希望它能解决你的问题。


推荐阅读