解決XRecyclerView動態切換佈局管理器 多次呼叫setAdapter崩潰
阿新 • • 發佈:2019-01-24
在做到類似於淘寶的商品列表介面時,要動態切換佈局管理器。由於之前使用原生RecyclerView加XRefreshView巢狀在DrawableLayout裡,結果XRefreshView上拉加載出了問題,所以只能換XRefreshView來做,剛開始一切都好,就在提交程式碼之前,測了一下切換佈局,結果就崩了。
[email protected] is already registered.
報以上錯誤,
檢視原始碼
@Override public void setAdapter(Adapter adapter) { mAdapter = adapter; mWrapAdapter= new WrapAdapter(mHeaderViews, mFootViews, adapter); super.setAdapter(mWrapAdapter); mAdapter.registerAdapterDataObserver(mDataObserver); }
此處再給介面卡註冊了觀察者後,當再次呼叫setAdapter()時,就會報以上錯誤;
修改如下:
@Override public void setAdapter(Adapter adapter) { mAdapter = adapter; mWrapAdapter = new WrapAdapter(mHeaderViews, mFootViews, adapter); super.setAdapter(mWrapAdapter); if (mAdapter.hasObservers()) { mAdapter.unregisterAdapterDataObserver(mDataObserver); } mAdapter.registerAdapterDataObserver(mDataObserver); }
加判斷,如果已經註冊了,就取消註冊,重新註冊。
目前就是我想到的解決辦法,如果有更好的,再拿出來分享。