У меня есть случай использования, когда мне нужна ссылка на родителя RecyclerView
изнутри адаптера, в частности внутри onBindViewHolder
метода. Пока что я назначаю его частному члену класса в onCreateViewHolder
методе, передающем viewGroup parent
arg следующим образом:
private ViewGroup mParent;
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// inflater logic.
mParent = parent;
}
И ссылки на родителя RecyclerView
в onBindViewHolder
следующим образом:
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// binder logic.
((RecyclerView)mParent).blahBlahBlah();
}
Есть ли лучший способ сделать это? Может, RecyclerView.Adapter
есть способ, который я пропустил?
Другой способ - передать ссылку в конструктор, например
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) { ... } }
источник