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) {
...
}
}