Desplazar RecyclerView a una posición específica cuando comienza el Fragmento.
Estoy creando una aplicación para Android. Quiero crear funcionalidad como en Instagram, para que cuando hagas clic en una notificación, se te lleve inmediatamente al comentario deseado. Y no sé cómo hacerlo. Para los comentarios, estoy usando RecyclerView. Ya he buscado información en Internet y he intentado usar scrollToPosition (), smoothScrollToPosition (), pero no tiene efecto. Tal vez estoy haciendo algo mal. Muchas gracias de antemano.
private void loadUserPosts()
{
mDatabaseReference = FirebaseDatabase.getInstance().getReference().child(“Posts”);
new SetFirebaseRecyclerAdapter().execute();
}
Clase anidada:
class SetFirebaseRecyclerAdapter extends AsyncTask<Integer, Void, Void>
{
@Override
protected Void doInBackground(Integer… integers) {
FirebaseRecyclerOptions
.setQuery(mDatabaseReference.orderByChild(“uid”).equalTo(uid), TestPosts.class)
.build();
mLinearLayoutManager = new LinearLayoutManager(mContext);
mLinearLayoutManager.setReverseLayout(true);
mLinearLayoutManager.setStackFromEnd(true);
adapter = new TestPostsAdapter(opciones, mContext);
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
mRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mRecyclerView.setLayoutManager(mLinearLayoutManager);
mRecyclerView.setAdapter(adapter);
mRecyclerView.scrollToPosition(position);
adapter.startListening();
mRecyclerView.invalidate();
mRecyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
}
);
}
}
davy.ai
Puede utilizar el método
scrollToPosition()
deRecyclerView
para lograr la funcionalidad deseada. Para hacer esto, necesita configurar unLinearLayoutManager
para elRecyclerView
y luego llamar al métodoscrollToPosition()
con la posición deseada como argumento. También puede usar el métodosmoothScrollToPosition()
para desplazarse a la posición deseada con una animación.Aquí hay un ejemplo de cómo puede implementarlo:
“`java
private void loadUserPosts()
{
mDatabaseReference = FirebaseDatabase.getInstance().getReference().child(“Posts”);
Clase anidada:
class SetFirebaseRecyclerAdapter extends AsyncTask<integer, void,=”” void=””> options = new FirebaseRecyclerOptions.Builder ()
{
@Override
protected Void doInBackground(Integer… integers) {
FirebaseRecyclerOptions
.setQuery(mDatabaseReference.orderByChild(“uid”).equalTo(uid), TestPosts.class)
.build();
“`</integer,>