Вы получаете следующую ошибку:
com.google.firebase.database.DatabaseException: Невозможно преобразовать объект типа java.lang.String в тип com.example.ModelHistory
Поскольку это правильное поведение, когда вы передаете uidRef
конструктору FirebaseRecyclerAdapter
.
В настоящее время я могу отображать только данные в разделе История.
Это происходит потому, что ваш адаптер определен как FirebaseRecyclerAdapter<ModelHistory, ViewHolder>
, что означает, что он должен загружать все объекты типа ModelHistory
, которые он находит по вашей ссылке mRef
, что на самом делеверно.Все объекты, существующие по этой ссылке, имеют тип ModelHistory
.
Проблема возникает, когда я пытаюсь отфильтровать узел History к дочернему узлу UID
Вы не можете просто изменить ссылку и ожидать, что результаты будут отфильтрованы таким образом, потому что ваш адаптер по-прежнему имеет тип ModelHistory
, а не тип String.Таким образом, при использовании ссылки uidRef
это означает, что вы пытаетесь загрузить все объекты типа ModelHistory
ниже этой ссылки, которые, очевидно, not выходы.В root -> History -> UID
существуют только свойства типа String (location and date
), и поэтому вы получаете эту ошибку.
Если вы хотите отфильтровать эти данные, вы должны создать запрос, который может выглядеть следующим образом:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference hisotryRef = rootRef.child("History");
Query query = hisotryRef.orderByChild("location").equalTo("Test");
И результатом в вашем RecyclerView
будет только один элемент, который в этом случае является последним, тот, у которого свойство location содержит Test
.
Кроме этого,вы используете старую версию библиотеки Firebase-UI .Я рекомендую вам обновить до последней версии.