0
if (mLayoutManager instanceof GridLayoutManager) { 
         ((GridLayoutManager) mLayoutManager).setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
          @Override 
          public int getSpanSize(int position) { 
           return listResultAdapter.isHeaderOrFooter(position) ? ((GridLayoutManager) mLayoutManager).getSpanCount() : 1; 
          } 
         }); 
        } 

上面的代碼是崩潰說java.lang.ClassCastException:android.support.v7.widget.LinearLayoutManager不能轉換到android.support.v7.widget.GridLayoutManager無法投LinearLayoutManager到GridLayoutManager

我想通了以下行導致崩潰

((GridLayoutManager) mLayoutManager).getSpanCount() 

什麼方法可以解決,以避免碰撞

mLayoutManager被聲明爲LinearLayoutManager

+0

順便說一句,你爲什麼聲明''mLayoutManager作爲''LinearLayoutManager但是用它作爲''GridLayoutManager? – shhp

+0

這怎麼可能? – apk

+0

其實我試過這樣做,但它崩潰時,我打電話notifydataset更改我嘗試使用gridlayoutmanager setspancount – apk

回答

0

你也應該做內部getSpanSize類檢查:

public int getSpanSize(int position) { 
    return mLayoutManager instanceof GridLayoutManager && listResultAdapter.isHeaderOrFooter(position) 
      ? ((GridLayoutManager) mLayoutManager).getSpanCount() : 1; 
} 
相關問題