1. 程式人生 > >解決XRecyclerView動態切換佈局管理器 多次呼叫setAdapter崩潰

解決XRecyclerView動態切換佈局管理器 多次呼叫setAdapter崩潰

在做到類似於淘寶的商品列表介面時,要動態切換佈局管理器。由於之前使用原生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); }

加判斷,如果已經註冊了,就取消註冊,重新註冊。

目前就是我想到的解決辦法,如果有更好的,再拿出來分享。