我正在尝试使用Firebase和列表。
我的对象包含一个扩展ArrayList的类,例如:
MyClass {
// other fields here
public static class List extends ArrayList<Foo> {};
}
如果我尝试将List
项目上传到Firebase数据库,则它开箱即用,不会遇到任何问题。
当我尝试从服务器检索这些List
时出现问题,例如:
MyClass mMyClass = dataSnapshot.getValue(MyClass.class);
这引发了一个例外
com.google.firebase.database.DatabaseException:无法将java.util.ArrayList类型的对象转换为mypackage.MyClass $ List
唯一可行的方法是恢复ArrayList<Foo>
而不是从另一个类扩展它。
有没有其他可能的方法可以毫无问题地投射? 提前谢谢。
答案 0 :(得分:1)
尝试使用GenericTypeIndicator将列表数据作为通用集合读取:
GenericTypeIndicator<MyClass.List> t = new GenericTypeIndicator<MyClass.List>() {};
MyClass.List mList = dataSnapshot.getValue(t);
我不确定这是否适用于内部类。您可能需要将List
声明为自己的独立类型。有关更多示例,请参阅this question。
答案 1 :(得分:0)
您是否尝试将值作为ArrayList获取,然后将其强制转换为您的类。 类似的东西:
MyClass mMyClass = (MyClass) dataSnapshot.getValue(ArrayList.class);
答案 2 :(得分:0)
用户addEventValueListener
获取特定参考的arraylist