Ich habe einen Anwendungsfall, in dem ich einen Verweis auf das übergeordnete RecyclerView
Element innerhalb des Adapters benötige , insbesondere innerhalb der onBindViewHolder
Methode. Bisher weise ich es einem privaten Klassenmitglied in der onCreateViewHolder
Methode zu, die das viewGroup parent
Argument wie folgt weitergibt :
private ViewGroup mParent;
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// inflater logic.
mParent = parent;
}
Und Referenzierung der Eltern RecyclerView
in onBindViewHolder
wie folgt aus :
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// binder logic.
((RecyclerView)mParent).blahBlahBlah();
}
Gibt es einen besseren Weg, dies zu tun? Vielleicht RecyclerView.Adapter
habe ich einen Weg verpasst?
Eine andere Möglichkeit besteht darin, eine Referenz im Konstruktor zu übergeben, z
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) { ... } }
quelle