Open rafalolsz opened 5 years ago
We also don't need to set default layout manager, so we can change setAdapter method to something like this:
public void setAdapter(Adapter adapter) {
if (adapter != null) {
adapter.registerAdapterDataObserver(observer);
if (getLayoutManager() == null) {
setLayoutManager(new CardStackLayoutManager(getContext()));
}
}
// Imitate RecyclerView's implementation
// http://tools.oesf.biz/android-9.0.0_r1.0/xref/frameworks/base/core/java/com/android/internal/widget/RecyclerView.java#1005
if (getAdapter() != null) {
getAdapter().unregisterAdapterDataObserver(observer);
getAdapter().onDetachedFromRecyclerView(this);
}
super.setAdapter(adapter);
}
I don't have access to push this fix by myself.
I need to remove adapter from CardStackView, because of some memory leaks. And I can't because there is a
registerAdapterDataObserver
called on adapter without checking if new adapter is null.