在做一個流式布局搜索歷史UI邻邮,當我在給RecyclerView添加HeaderView的時候,報如下異常
ClassCastException: android.support.v7.widget.RecyclerView$LayoutParams cannot be cast to com.google.android.flexbox.FlexItem
就是說鹊杖,我們添加的HeaderView,無法轉換成FlexlItem军援,但是為了復用仅淑,踩坑吧!百度引擎是搜不到胸哥,只能起飛了涯竟,Google 一下就找到了解決方法,實現自己的 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轉換成新的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);
}
}
}