studio recyclerview make how ejemplo dependency create card and android android-adapter android-recyclerview

android - make - ¿Hay una mejor manera de obtener una referencia al RecyclerView padre desde el adaptador?



recyclerview android studio ejemplo (2)

En realidad, hay un método específico que devuelve la llamada con RecyclerView que se conecta al adaptador. Simplemente anule el onAttachedToRecylerView(RecyclerView recyclerView) .

public class Adapter_RV extends RecyclerView.Adapter<RecyclerView.ViewHolder>{ RecyclerView mRecyclerView; @Override public void onAttachedToRecyclerView(RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); mRecyclerView = recyclerView; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return null; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { mRecyclerView.... }

Tengo un caso de uso en el que necesito una referencia al RecyclerView padre desde dentro del adaptador, específicamente dentro del método onBindViewHolder . Hasta ahora, lo que estoy haciendo es asignarlo a un miembro de la clase privada en el método onCreateViewHolder pasando el viewGroup parent la viewGroup parent manera:

private ViewGroup mParent; @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // inflater logic. mParent = parent; }

Y haciendo referencia al RecyclerView padre en onBindViewHolder esta manera:

@Override public void onBindViewHolder(ViewHolder holder, int position) { // binder logic. ((RecyclerView)mParent).blahBlahBlah(); }

¿Hay una mejor manera de hacer esto? ¿Tal vez RecyclerView.Adapter tiene una forma que podría haber pasado por alto?


Otra forma es pasar una referencia en el constructor, p. Ej.

public final class MyAdapter extends RecyclerView.Adapper { private final recyclerView; public MyAdapter(@NonNull RecyclerView recyclerView) { this.recyclerView = recyclerView; } ... @Override public void onBindViewHolder(ViewHolder holder, int position) { ... } }