Android – How to Retrieve a List object from the firebase in android

androidarraylistfirebasefirebase-realtime-database

I am having trouble retrieving a List from the Firebase. I have no trouble storing it, but as soon as I try to cast dataSnapshot.getValue() to ArrayList my app crashes, giving an exception:

HashMap cannot be casted to ArrayList

But when I tried to cast it to a HashMap, it also crashes, giving exception:

ArrayList can't be casted to hashmap

Need help please! Here is the code that is creating the problem:

Fire.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<TaskDes> td = (ArrayList<TaskDes>) dataSnapshot.getValue()
        notifyDataSetChanged();
    }

    @Override
    public void onCancelled(FirebaseError firebaseError) {

    }
});

firebase object screen shot

I want to retrieve all the data in the Firebase as one List. The class TaskDes contains three fields:

class TaskDes { // definition
    boolean done
    String taskDescription
    String taskTitle
}

Best Solution

You need to create a GenericTypeIndicator object to pass as DataSnapshot.getValue() parameter.

Code:

GenericTypeIndicator<List<String>> t = new GenericTypeIndicator<List<String>>() {};

List<String> yourStringArray = dataSnapshot.getValue(t);