я столкнулся с этой проблемой
Я использую представление сетки в шахматном порядке, и оно имеет комбинацию двух столбцов и одиночных столбцов. Что-то вроде этого
все работает нормально, пока я несколько раз не прокручиваю вверх и вниз, и он случайным образом не меняется на что-то вроде этого
Еще несколько свитков и вот так
Я понятия не имею, почему, и это очень случайно. Я пытался сделать notifyDataSetChanged каждый раз, когда отображается страница, и, похоже, ничего не делает.
Это код моей приборной панели
public class DashboardStaggered extends Fragment {
RecyclerView mRecyclerView;
View v;
MasonryAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d("MASONRY", "onCreateView");
super.onCreate(savedInstanceState);
if(v==null) {
Log.d("MASONRY", "v is NULL recreating");
v = inflater.inflate(R.layout.activity_dashboard_staggered, container, false);
setupRecyclerView();
}else{
Log.d("MASONRY", "v is NOT NULL");
}
return v;
}
private void setupRecyclerView(){
mRecyclerView = (RecyclerView) v.findViewById(R.id.masonry_grid);
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
adapter = new MasonryAdapter(getActivity(),this);
mRecyclerView.setAdapter(adapter);
SpacesItemDecoration decoration = new SpacesItemDecoration(12);
mRecyclerView.addItemDecoration(decoration);
adapter.notifyDataSetChanged();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
@Override
public void onResume() {
super.onResume();
Log.d("MASONRY", "onResume");
if(mRecyclerView==null) {
setupRecyclerView();
}
}
@Override
public void onPause() {
super.onPause();
Log.d("MASONRY", "onPause");
}
}
Если нужно, могу и адаптер выложить. Любые предложения высоко ценятся, ребята.
Код адаптера здесь (не хочу загромождать пост) http://pastebin.com/QkZbjjp1
Урезанный код http://pastebin.com/Hgsji1RG
getItemViewType
, так как это метод, который определяет типы представлений. - person Jason Robinson   schedule 11.01.2016getItemViewType()
. Вы не обрабатываете ViewType в зависимости от позиции, вы просто меняете тип для первой (позиция 0) и последней (позиция 11), но для остальных позиций вы используете тот же типTILE_TYPE_ONE_COLUMN__TILE
. - person Rami   schedule 11.01.2016