在做一個(gè)流式布局搜索歷史UI,當(dāng)我在給RecyclerView添加HeaderView的時(shí)候,報(bào)如下異常
ClassCastException: android.support.v7.widget.RecyclerView$LayoutParams cannot be cast to com.google.android.flexbox.FlexItem
就是說(shuō),我們添加的HeaderView,無(wú)法轉(zhuǎn)換成FlexlItem,但是為了復(fù)用,踩坑吧!百度引擎是搜不到,只能起飛了,Google 一下就找到了解決方法,實(shí)現(xiàn)自己的 FlexboxLayoutManager
/**
* Created by dzh on 02.23.023.
*/
public class MyFlexboxLayoutManager extends FlexboxLayoutManager{
public MyFlexboxLayoutManager(Context context) {
super(context);
}
public MyFlexboxLayoutManager(Context context, int flexDirection) {
super(context, flexDirection);
}
public MyFlexboxLayoutManager(Context context, int flexDirection, int flexWrap) {
super(context, flexDirection, flexWrap);
}
/**
* 將LayoutParams轉(zhuǎn)換成新的FlexboxLayoutManager.LayoutParams
*/
@Override
public RecyclerView.LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
if (lp instanceof RecyclerView.LayoutParams) {
return new FlexboxLayoutManager.LayoutParams((RecyclerView.LayoutParams) lp);
} else if (lp instanceof ViewGroup.MarginLayoutParams) {
return new FlexboxLayoutManager.LayoutParams((ViewGroup.MarginLayoutParams) lp);
} else {
return new FlexboxLayoutManager.LayoutParams(lp);
}
}
}