If you first set one adapter to grid with it's own items layout, after that set another adapter with different items layout, grid will use items layout from first adapter for some items. I temporarily solved this problem by adding clearState() to setAdapter() method.
@Override
public void setAdapter(final ListAdapter adapter) {
clearState();
if (mAdapter != null) {
mAdapter.unregisterDataSetObserver(mObserver);
}
// use a wrapper list adapter if we have a header or footer
if (mHeaderViewInfos.size() > 0 || mFooterViewInfos.size() > 0) {
mAdapter = new HeaderViewListAdapter(mHeaderViewInfos, mFooterViewInfos, adapter);
}
else {
mAdapter = adapter;
}
mDataChanged = true;
mItemCount = mAdapter != null ? mAdapter.getCount() : 0;
if (mAdapter != null) {
mAdapter.registerDataSetObserver(mObserver);
mRecycleBin.setViewTypeCount(mAdapter.getViewTypeCount());
}
requestLayout();
}
If you first set one adapter to grid with it's own items layout, after that set another adapter with different items layout, grid will use items layout from first adapter for some items. I temporarily solved this problem by adding
clearState()
tosetAdapter()
method.