FirebaseRecyclerAdapter – Как получить последний элемент?

Мне нужно получить последний элемент списка (CardView), поступающий из FirebaseRecyclerAdapter, чтобы добавить к нему дополнительное нижнее заполнение.

Проблема в том, что FirebaseRecyclerAdapter работает немного иначе, чем RecyclerView, и ему передается не массив или список элементов, а ссылка на базу данных Firebase.

Так что я не могу этого сделать. Например:

@Override
public void onBindViewHolder(UserViewHolder userViewHolder, int position) {

   if( position == getItemCount() - 1 ){
      // Your last item
   }

}

Кто-нибудь может помочь, пожалуйста?


person Andy Strife    schedule 14.12.2016    source источник


Ответы (2)


Вот моя попытка, которая может вам помочь:

FirebaseRecyclerAdapter.getItemCount(), так как его документация скопирована с RecyclerView.Adapter (пока не большая разница):

Возвращает общее количество элементов в наборе данных, удерживаемом адаптером.

Вместо onBindViewHolder() вы можете сделать это в populateViewHolder():

@Override
protected void populateViewHolder(VH viewHolder, T model, int position)
{
    if (position == getItemCount() - 1)
    {

    }
}
person amrro    schedule 15.12.2016

вы можете сделать это, если хотите использовать onBindViewHolder

LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(getContext());
    mLinearLayoutManager.setReverseLayout(true);
    mLinearLayoutManager.setStackFromEnd(true);

и переопределить onBindViewHolder

        @Override
        public void onBindViewHolder(mViewHelper viewHolder, int position) {
            if(position ==  0){
                viewHolder.button.setVisibility(View.VISIBLE); 
            }
            super.onBindViewHolder(viewHolder, position);
        }

а также

mRecyclerView.setLayoutManager(mLinearLayoutManager);
person m0aaz    schedule 16.12.2016