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; 
} 
相关问题