Firebase RecyclerView – Desplácese sobre la animación cuando se añade un elemento nuevo
Estoy usando la biblioteca de animación RecyclerView que se encuentra aquí . También estoy usando el FirebaseRecyclerAdapter, documentación que se encuentra aquí .
Esencialmente, quiero desplazarme a la parte superior de la RecyclerView como elementos se agregan a Firebase. Es difícil ya que realmente no estoy inicializando el adaptador con un ArrayList (), o cualquier lista, para el caso. Firebase maneja toda la gestión de datos a través del FirebaseRecyclerAdapter.
- Haga doble clic en OnClickListener de un adaptador de vista de reciclador
- RecyclerView parpadea después de notifyDatasetChanged ()
- Diseño cuadrado en GridLayoutManager para RecyclerView
- Animar las adiciones de RecyclerView desde abajo
- CardView layout_width = "match_parent" no coincide con el ancho de RecyclerView padre
Aquí está mi onCreateView básico ():
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment final View v = inflater.inflate(R.layout.fragment_new, container, false); Log.v("TAG", "ON CREATE CALLED FROM NEW"); mRecyclerview = (RecyclerView) v.findViewById(R.id.list); mRecyclerview.setItemAnimator(new FadeInUpAnimator()); mLayoutManager = new LinearLayoutManager(getContext()); mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); mLayoutManager.setReverseLayout(true); mLayoutManager.setStackFromEnd(true); mRecyclerview.setLayoutManager(mLayoutManager); return v; }
Y mi adaptador:
@Override public void onStart() { super.onStart(); mFireAdapter = new FirebaseRecyclerAdapter<Poll, PollHolder>(Poll.class, R.layout.latest_item, PollHolder.class, mBaseRef.child("Polls")) { @Override protected void populateViewHolder(PollHolder viewHolder, Poll model, int position) { mRecyclerview.scrollToPosition(position); viewHolder.mPollQuestion.setText(model.getQuestion()); Picasso.with(getActivity().getApplicationContext()) .load(model.getImage_URL()) .fit() .into(viewHolder.mPollImage); Log.v("TAG", model.getQuestion()); Log.v("TAG", model.getImage_URL()); } }; mRecyclerview.setAdapter(mFireAdapter); }
¿Cómo me desplazaría a la parte superior de RecylcerView cuando se agreguen los elementos? Tenga en cuenta que estoy llamando:
mLayoutManager.setReverseLayout(true); mLayoutManager.setStackFromEnd(true);
Ya que necesito invertir el orden de los datos en Firebase.
- Cómo refundir elementos en un RecyclerView con el StaggeredGridLayoutManager
- RecyclerView no llama aCreateViewHolder o onBindView
- Detener el desplazamiento del usuario para establecer la posición en RecyclerView
- RecyclerView in DialogFragment -> arrastre y suelte (swap) retrasos de animación
- Cómo filtrar un RecyclerView con un SearchView
- Biblioteca avanzada de RecyclerView - ejemplos de código
- Problema de desplazamiento Infinito Infinito de RecyclerView
- Evento de toque de la manija para los artículos dentro de Recyclerview - android
En realidad era capaz de encontrar en la documentación de la interfaz de usuario Firebase – es necesario llamar al método .registerAdapterDataObserver(
):
@Override public void onStart() { super.onStart(); mFireAdapter = new FirebaseRecyclerAdapter<Poll, PollHolder>(Poll.class, R.layout.latest_item, PollHolder.class, mBaseRef.child("Polls")) { @Override protected void populateViewHolder(PollHolder viewHolder, Poll model, int position) { viewHolder.mPollQuestion.setText(model.getQuestion()); Picasso.with(getActivity().getApplicationContext()) .load(model.getImage_URL()) .fit() .into(viewHolder.mPollImage); Log.v("TAG", model.getQuestion()); Log.v("TAG", model.getImage_URL()); } }; mRecyclerview.setAdapter(mFireAdapter); mFireAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() { @Override public void onItemRangeInserted(int positionStart, int itemCount) { super.onItemRangeInserted(positionStart, itemCount); int friendlyMessageCount = mFireAdapter.getItemCount(); int lastVisiblePosition = mLayoutManager.findLastCompletelyVisibleItemPosition(); // If the recycler view is initially being loaded or the user is at the bottom of the list, scroll // to the bottom of the list to show the newly added message. if (lastVisiblePosition == -1 || (positionStart >= (friendlyMessageCount - 1) && lastVisiblePosition == (positionStart - 1))) { mRecyclerview.scrollToPosition(positionStart); } } }); }
- Obtenga el valor actual de RxJava Observable
- Kotlin: @ propiedades ignoradas persistidas por Sugar ORM