FirebaseRecyclerAdapter стреляет дважды - PullRequest
0 голосов
/ 12 мая 2018

У меня проблема с использованием FirebaseRecyclerAdapater, сначала он работал нормально, но теперь этот adapter запускается дважды.Ссылка на базу данных относится только к одному дочернему элементу, но она всегда срабатывает дважды.Тост с текстом «счетчик» появится дважды

FirebaseRecyclerAdapter<RequestVisit, RequestViewHolder> requestAdapter = 
    new FirebaseRecyclerAdapter<RequestVisit, RequestViewHolder>(
    RequestVisit.class,
    R.layout.seekerrequests_layout,
    RequestViewHolder.class,
    requestDatabase.child("2DBwmhGplGMoAlLy6337HZEShi93")
) {
@Override
protected void populateViewHolder(final RequestViewHolder viewHolder, RequestVisit model, int position) {
     Toast.makeText(getContext(), "counter" + 
     viewHolder.getAdapterPosition(), Toast.LENGTH_SHORT).show();
    }
};
requestVisitList.setAdapter(requestAdapter);

1 Ответ

0 голосов
/ 13 мая 2018

Адаптер Firebase * показывает список элементов, дочерние узлы под местоположением, к которому вы его присоединяете.

Если populateViewHolder вызывают с двумя разными позициями, это означает, что под requestDatabase.child("2DBwmhGplGMoAlLy6337HZEShi93").

есть два ребенка.

Имейте в виду, что если 2DBwmhGplGMoAlLy6337HZEShi93 является дочерним узлом с двумя свойствами, то ваш подход будет вызывать populateViewHolder для каждого из этих свойств.

Если вы хотите показать только один элемент в RecyclerView, вы можете создать простой запрос с помощью:

FirebaseRecyclerAdapter<RequestVisit, RequestViewHolder> requestAdapter = 
    new FirebaseRecyclerAdapter<RequestVisit, RequestViewHolder>(
    RequestVisit.class,
    R.layout.seekerrequests_layout,
    RequestViewHolder.class,
    requestDatabase.orderByKey().equalTo("2DBwmhGplGMoAlLy6337HZEShi93")
) 
...