Как получить объект списка из firebase в android

У меня возникли проблемы с получением списка из Firebase. У меня нет проблем с его хранением, но как только я попытаюсь передать dataSnapshot.getValue () в ArrayList, мое приложение отключится, предоставив исключение:

HashMap не может быть отправлен в ArrayList

Но когда я попытался передать его в HashMap, он также выйдет из строя, давая исключение:

ArrayList нельзя отбрасывать в hashmap

Нужна помощь, пожалуйста! Вот код, который создает проблему:

Fire.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { List td = (ArrayList) dataSnapshot.getValue() notifyDataSetChanged(); } @Override public void onCancelled(FirebaseError firebaseError) { } }); 

фото

Я хочу получить все данные в Firebase как один Список. Класс TaskDes содержит три поля:

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

Вам необходимо создать объект GenericTypeIndicator для передачи в качестве параметра DataSnapshot.getValue() .

Код:

 GenericTypeIndicator> t = new GenericTypeIndicator>() {}; List yourStringArray = dataSnapshot.getValue(t); 

Ваша модель

 public class TaskDes { private boolean done; private String taskDescription; private String taskTitle; public TaskDes() { } public boolean isDone() { return done; } public void setDone(boolean done) { this.done = done; } public String getTaskDescription() { return taskDescription; } public void setTaskDescription(String taskDescription) { this.taskDescription = taskDescription; } public String getTaskTitle() { return taskTitle; } public void setTaskTitle(String taskTitle) { this.taskTitle = taskTitle; } } 

Вам необходимо создать объект GenericTypeIndicator для передачи в качестве параметра DataSnapshot.getValue() .

В действии

  private static final String TAG=MainActivity.class.getSimpleName(); private FirebaseDatabase database; private DatabaseReference myRef=null; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); database=FirebaseDatabase.getInstance(); myRef=database.getReference("ADD_YOUR_REFERECE"); myRef.addValueEventListener(new ValueEventListener(){ @Override public void onDataChange(DataSnapshot dataSnapshot){ /* This method is called once with the initial value and again whenever data at this location is updated.*/ long value=dataSnapshot.getChildrenCount(); Log.d(TAG,"no of children: "+value); GenericTypeIndicator> genericTypeIndicator =new GenericTypeIndicator>(){}; List taskDesList=dataSnapshot.getValue(genericTypeIndicator); for(int i=0;i 

Сделайте другой элемент, содержащий список для вашего предмета: Это ваш пункт:

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

Это элемент списка

  class TaskDesList { // definition private ArreyList yourlist } public TaskDesList(){ } public ArrayList getYourlist() { return yourlist; } 

и при вызове EventListener

 ref.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { yourlist.clear(); taskDesList=dataSnapshot.getValue(TaskDesList.class); if (taskDesList!=null) { yourlist= taskDesList.getYourlist(); } } 

и теперь «ваш список» – это список, содержащий все ваши объекты «TaskDes»

Немного поздно, но в случае, если это кому-то еще понадобится.

Если список находится внутри другого объекта.

Объект

 public class Question { public Date date; public String questionNumber; public String questionText; public QuestionType questionType; public String multipleSelection1; public String multipleSelection2; public String multipleSelection3; public Question() { // Default constructor required for calls to DataSnapshot.getValue(User.class) } } 

Затем, чтобы получить массив объектов вопроса

 GenericTypeIndicator> t = new GenericTypeIndicator>() {}; List questionList = dataSnapshot.getValue(t); 
  • Как заблокировать базу данных Firebase любому пользователю из определенного (электронной почты) домена?
  • Получить пользователей по имени с использованием Firebase
  • Паганирование абажуров Firebase
  • Google firebase проверяет, существует ли ребенок
  • Как скрыть элемент от просмотра Recycler в определенном состоянии?
  • Как отключить запись в Firebase 3.x
  • Firebase Android: как читать из разных ссылок последовательно
  • Данные запроса Firebase
  • Есть ли способ использовать GeoFire с Firestore?
  • Как подключиться к нескольким базам данных firebase из приложения Android
  • Ошибка конструктора списка Firebase
  • Давайте будем гением компьютера.