我有app,我正在使用Firebase实时数据库。我需要从Search
获取所有数据并使用以下代码:
myRef = FirebaseDatabase.getInstance().getReference();
Query query = myRef.orderByChild("Search");
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
GenericTypeIndicator<ArrayList<String>> t = new GenericTypeIndicator<ArrayList<String>>(){};
test2 = dataSnapshot.getValue(t);
我需要在ArrayList中获取所有内容,但现在我得到的是异常
com.google.firebase.database.DatabaseException:期望列表 反序列化,但得到了一个java.util.HashMap类
数据库结构:
我该如何解决这个问题?我需要从Search
中的ArrayList
获取所有数据。
如果您需要,我可以发布活动和日志中的所有代码。
JSON:
{
"Search" : [ "Eggs", "Milk", "Apples", "Carrot", "Sugar", "Potato" ]
}
答案 0 :(得分:3)
假设object
节点是Firebase数据库根目录的直接子节点,要解决此问题,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference searchRef = rootRef.child("object").child("Search");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> list = new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String value = ds.getValue(String.class);
list.add(value);
}
Log.d("TAG", list.toString());
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
searchRef.addListenerForSingleValueEvent(valueEventListener);
输出将是:
Eggs
Milk
Apples
Carrot
Sugar
Potato